Winform出现两次

时间:2010-12-06 22:32:59

标签: c# winforms

我正在创建一个winforms的个人项目,只是为了获得一些经验,因为我以前从来没有机会使用它。所以,当涉及到Winforms时,我就是n00b。这是我遇到的错误:

在表单BudgetTracker中,我有一个名为“AddCat”的按钮。下面是表单的构造函数和按钮的click eventHandler:

        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表单中,我有一个Cancel按钮。代码:

        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 个答案:

答案 0 :(得分:6)

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
}

答案 1 :(得分:2)

根据您的代码判断,您只需显示两次表单!!!

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

第二行显示表单并阻止方法,直到设置了DialogResult ,然后第三行显示表单而不阻止方法

只需删除第三行!

答案 2 :(得分:1)

尝试使用F8键而不是运行代码或按F5来逐步执行代码。它将逐行显示它将要执行的内容。

答案 3 :(得分:1)

删除NewCatForm.Show();