#c# #forms #get #set
#c# #формы #получить #установить
Вопрос:
Я создаю простую программу текстового редактора. Когда текст отредактирован, появляется окно с вопросом, хотите ли вы сохранить файл. Это было реализовано с использованием форм и логических значений, сохраненных во всплывающем окне. Если я нажму да, нет или отмену в первый раз, установщики не будут работать. Но если я нажму второй, установщики будут работать отлично. Почему это не работает с первого раза? Код для всплывающего окна.
public bool Exit { set; get; }
public bool Save { set; get; }
public bool _Open { set; get; }
case ("Yes"):
{
if (form1.Operation() == "Exit")
{
Exit = true; //Bool that tells the program to exit.
MessageBox.Show(Exit.ToString()); //This prints the correct value
}
Save = true; //Bool that states if file should be saved.
return;
}
Код для основного окна редактирования текста. Пример с пользователем, нажавшим кнопку выхода.
public partial class Form1 : Form
{
Form3 form3 = new Form3(); //the popup class.
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (e.CloseReason == CloseReason.UserClosing)
{
if (_edited)
{
_operation = "Exit";
form3.ShowDialog();
MessageBox.Show(form3.Exit.ToString()); //Always false on first entry?
if (form3.Exit)
{
if (form3.Save)
{
Save();
}
}
else
{
e.Cancel = true;
}
}
}
}
}
Ответ №1:
В вашем вопросе вы говорите «да, нет или отмена», но во втором блоке кода, похоже, он установлен только Exit = true
для случая «Да». Может ли это быть проблемой?
Вы могли бы попробовать установить точки останова и отладить код, чтобы иметь возможность понять, что происходит. Если вы удалите автоматические свойства и добавите резервное поле вручную, вы также можете установить точки останова, чтобы видеть, когда вызываются установщики. Вы могли бы написать свой выход следующим образом:
private bool _exit;
public bool Exit
{
get => _exit;
set
{
_exit = value;
}
}
Это позволит вам установить точку останова и точно увидеть, когда вызывается установщик.
Если вам нужна помощь в отладке, пожалуйста, предоставьте некоторую информацию о том, какой редактор кода вы используете.