Winform появляется дважды - PullRequest
       0

Winform появляется дважды

1 голос
/ 07 декабря 2010

Я работаю над личным проектом в winforms, просто чтобы получить некоторый опыт, так как у меня никогда не было возможности работать с ним раньше.Итак, я довольно n00b, когда дело доходит до Winforms.Это ошибка, с которой я сталкиваюсь:

В форме BudgetTracker у меня есть кнопка под названием «AddCat».Ниже представлен конструктор формы и событие события нажатия кнопки:

        public form_BudgetTracker()
        {
            InitializeComponent();
            setEvents();
        }

        public void setEvents()
        {
            this.btn_AddCat.Click += new System.EventHandler(this.btn_AddCat_Click);
        }

        private void btn_AddCat_Click(object sender, EventArgs e)
        {
            form_NewCat NewCatForm = new form_NewCat();
            var NewCatFormResult = NewCatForm.ShowDialog();
            NewCatForm.Show();
        }

В появившейся форме NewCat у меня есть кнопка Отмена.Код:

        public form_NewCat()
        {
            InitializeComponent();
            SetEvents();
        }

        private void SetEvents()
        {
            this.btn_Add.Click += new System.EventHandler(this.btn_Add_Click);
            this.btn_Cancel.Click += new System.EventHandler(this.btn_Cancel_Click);
        }

        private void btn_Cancel_Click(object sender, EventArgs e)
        {
            this.Close();
        }

Проблема, с которой я сталкиваюсь, заключается в том, что когда я нажимаю кнопку Добавить, появляется новая форма.В этот момент, если я нажму «Отмена», форма исчезнет, ​​но сразу же появится новый экземпляр формы.Затем я снова нажимаю «Отмена», и форма исчезает.Какая часть моего кода заставляет форму появляться дважды.Я проверил конструкторы и т.д., но не мог понять это.Буду признателен за любую помощь или указатели.

PS - Как я уже говорил, я новичок в программировании winforms, поэтому любые подсказки или указатели также будут оценены.

Ответы [ 4 ]

6 голосов
/ 07 декабря 2010
private void btn_AddCat_Click(object sender, EventArgs e)
{
    form_NewCat NewCatForm = new form_NewCat();
    var NewCatFormResult = NewCatForm.ShowDialog(); // <-- opens the first time
    NewCatForm.Show();                              // <-- opens the second time
}
2 голосов
/ 07 декабря 2010

Судя по вашему коду, вы просто показываете форму дважды !!!

        form_NewCat NewCatForm = new form_NewCat(); 
        var NewCatFormResult = NewCatForm.ShowDialog(); 
        NewCatForm.Show(); 

Вторая строка показывает форму и блокирует метод до тех пор, пока DialogResult не установлен , затем третья строка показывает форму без блокировки метода .

Просто удалите третью строку!

1 голос
/ 07 декабря 2010

удалить NewCatForm.Show ();

1 голос
/ 07 декабря 2010

Попробуйте пройти по коду, используя клавишу F8 вместо запуска, или нажмите F5.Он будет построчно показывать вам, что он собирается выполнить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...