Я загружаю свой проект и затем эти два окна всплывают одно за другим (я объясняю первое окно ниже):
Но иногда второе окно, которое показывает это:
Однако, естьшаблон, показывающий, какое из двух вторых окон отображается.
Я заметил, что если я загружаю свое решение, дважды щелкнув файл решения в проводнике файлов> расположение решения на диске (не в Visual Studio, файл> открыть), затем второе окно, которое показывает ссылки на диск G (мой перьевой диск, на котором есть решение).
Однако, если я загружаю решение, загружая Visual Studio, то выбираю файл> открыть и выбираю решение (на том же диске G) затем второе окно, которое показывает, ссылается на диск C.
Первое окно, которое показывает, предположительно, указывает, что метод вызывается в пользовательском элементе управления, который находится в главной форме, всякий раз, когдарешение загружено:
private void EndQuiz()
{
this.Visible = false;
questionNumber = 1;
MessageBox.Show("You finished the quiz with " + score + " score", "Complete");
score = 0;
}
Класс этого пользовательского элемента управления с методом EndQuiz () (вы найдете его примерно на полпути вниз):
public partial class QuizUC : UserControl
{
public Label LabelTheme { get { return labelTheme; } }
public Label LabelQuestionNumber { get { return labelQuestionNumber; } }
public Label LabelQuestion { get { return labelQuestion; } }
public Label LabelScore { get { return labelScore; } }
public Button BtnOption1 { get { return btnOption1; } }
public Button BtnOption2 { get { return btnOption2; } }
public Button BtnOption3 { get { return btnOption3; } }
public Button BtnOption4 { get { return btnOption4; } }
public PictureBox PictureBox1 { get { return pictureBox1; } }
Random rnd;
Bitmap quizImage;
public string correctAnswer;
int correctAnswerNo = 0, questionsAsked = 0, questionNumber, rndQuestionNo, score;
string question, answer;
string[] individualAnswers;
bool isOver = false;
List<string> questions;
List<int> usedQuestions;
List<string> answers;
private int _noOfQuestions;
private string _selectedTheme = "";
// quiz not loading on second time DONE
// selected 5 questions, gave 6 DONE
// duplicate questions
// label question overlapping with buttons
public QuizUC()
{
InitializeComponent();
}
public void ShowAll()
{
labelTheme.Show();
labelQuestion.Show();
labelQuestionNumber.Show();
btnOption1.Show();
btnOption2.Show();
btnOption3.Show();
btnOption4.Show();
labelScore.Show();
pictureBox1.Show();
}
public void SetUpVariables(int noOfQuestions, string selectedTheme)
{
_noOfQuestions = noOfQuestions < 5 || noOfQuestions > 15 ? 5 : noOfQuestions;
_selectedTheme = selectedTheme ?? "";
}
private void QuizUC_VisibleChanged(object sender, EventArgs e)
{
if (this.Visible)
{
SetUpQuiz();
}
}
private void QuizUC_Load(object sender, EventArgs e)
{
ReadQuestionsAndAnswersFromFile();
}
private void SetUpQuiz()
{
SetLabelSizes(); // question text will not go off the edge
labelScore.Text = "Score: 0";
SetTransparency();
SetQuestionNumber();
usedQuestions = new List<int>();
questionsAsked = 0;
questionNumber = 1;
score = 0;
RandomiseQuestion();
labelTheme.Text = "Theme: Space";
labelQuestionNumber.Text = $"Question number: {questionNumber}";
quizImage = new Bitmap("solarsystem.jpg");
pictureBox1.Image = quizImage;
}
private void ReadQuestionsAndAnswersFromFile()
{
string questionFile = "quiz/questions.txt", answerFile = "quiz/answers.txt";
questions = File.ReadAllLines(questionFile).ToList();
answers = File.ReadAllLines(answerFile).ToList();
}
private void SetLabelSizes()
{
labelQuestion.MaximumSize = new Size(labelQuestion.Width, 0);
labelQuestion.AutoSize = true;
}
public void SetTransparency()
{
labelQuestion.BackColor = Color.Transparent;
labelTheme.BackColor = Color.Transparent;
labelQuestionNumber.BackColor = Color.Transparent;
labelScore.BackColor = Color.Transparent;
}
public void SetQuestionNumber()
{
labelQuestionNumber.Text = "Question number: " + questionNumber;
}
private void EndQuiz()
{
this.Visible = false;
questionNumber = 1;
MessageBox.Show("You finished the quiz with " + score + " score", "Complete");
score = 0;
}
public void ResetQuiz()
{
questionsAsked = 0;
score = 0;
labelScore.Text = "Score " + score;
questionNumber = 1;
questions = File.ReadAllLines("quiz/questions.txt").ToList();
answers = File.ReadAllLines("quiz/answers.txt").ToList();
usedQuestions.Clear();
}
public void RandomiseQuestion()
{
questionsAsked++;
if (questionsAsked == _noOfQuestions + 1)
{
EndQuiz();
ResetQuiz();
return;
}
rnd = new Random();
// ShowAll();
rndQuestionNo = rnd.Next(0, questions.Count);
question = questions.Count == 1 ? questions[0] : questions[rndQuestionNo];
answer = answers[rndQuestionNo];
questions.RemoveAt(rndQuestionNo);
answers.RemoveAt(rndQuestionNo);
individualAnswers = answer.Split(',');
for (int i = 0; i < individualAnswers.Length; i++)
{
if (individualAnswers[i].Contains('*'))
{
correctAnswerNo = i;
}
}
individualAnswers[correctAnswerNo] = individualAnswers[correctAnswerNo].Trim('*');
correctAnswer = individualAnswers[correctAnswerNo];
labelQuestion.Text = question;
btnOption1.Text = individualAnswers[0];
btnOption2.Text = individualAnswers[1];
btnOption3.Text = individualAnswers[2];
btnOption4.Text = individualAnswers[3];
}
private void IncreaseScore(int score)
{
labelScore.Text = "Score: " + score.ToString();
}
private bool CheckToReturn()
{
var noOfQuestions = Single.GetSingle().AskHowManyQuestionsForm.NoOfQuestions;
if (questionNumber == noOfQuestions)
{
return true;
}
else
{
return false;
}
}
private void btnOption1_Click(object sender, EventArgs e)
{
if (btnOption1.Text == correctAnswer)
{
MessageBox.Show("Correct answer!", "Correct");
questionNumber++;
SetQuestionNumber();
score++;
IncreaseScore(score);
isOver = CheckToReturn();
RandomiseQuestion();
}
else
{
MessageBox.Show("Incorrect answer!", "Incorrect");
questionNumber++;
SetQuestionNumber();
isOver = CheckToReturn();
RandomiseQuestion();
}
}
private void btnOption2_Click(object sender, EventArgs e)
{
if (btnOption2.Text == correctAnswer)
{
MessageBox.Show("Correct answer!", "Correct");
questionNumber++;
SetQuestionNumber();
score++;
IncreaseScore(score);
isOver = CheckToReturn();
RandomiseQuestion();
}
else
{
MessageBox.Show("Incorrect answer!", "Incorrect");
questionNumber++;
SetQuestionNumber();
isOver = CheckToReturn();
RandomiseQuestion();
}
}
private void btnOption3_Click(object sender, EventArgs e)
{
if (btnOption3.Text == correctAnswer)
{
MessageBox.Show("Correct answer!", "Correct");
questionNumber++;
SetQuestionNumber();
score++;
IncreaseScore(score);
isOver = CheckToReturn();
RandomiseQuestion();
}
else
{
MessageBox.Show("Incorrect answer!", "Incorrect");
questionNumber++;
SetQuestionNumber();
isOver = CheckToReturn();
RandomiseQuestion();
}
}
private void btnOption4_Click(object sender, EventArgs e)
{
if (btnOption4.Text == correctAnswer)
{
MessageBox.Show("Correct answer!", "Correct");
questionNumber++;
SetQuestionNumber();
score++;
IncreaseScore(score);
isOver = CheckToReturn();
RandomiseQuestion();
}
else
{
MessageBox.Show("Incorrect answer!", "Incorrect");
questionNumber++;
SetQuestionNumber();
isOver = CheckToReturn();
RandomiseQuestion();
}
}
}
Всякий раз, когда я открываю окно дизайна меню в Visual Studio, этопоказывает:
В чем здесь проблема?Я прошу прощения, если я не включил весь необходимый код, пожалуйста, скажите мне, что еще я должен включить, если мне нужно.Я ценю, что вы все это прочитали.
Редактировать: проверить комментарии для получения дополнительной информации.
Кроме того, раньше у меня был серый фон здесь, но теперь форма выглядит так, с сообщением об ошибкепозади (я утащил другой элемент управления, не являющийся QuizUC, как объяснено в комментариях, он исчез из представления проекта):