我正在创建一个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编程的新手,所以任何提示或指针都会受到赞赏。
答案 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();