我在c#中使用Windows窗体,并且在不同形式(我有2个)应该关闭和不关闭的方式和时间方面存在问题。这是非常烦人的,因为我觉得我应该能够解决它。但是我们走了。
我有两个表单,一个调用另一个名为ContactForm的表单的MainForm。
主要形式:
private void btnAdd_Click(object sender, EventArgs e)
{
ContactForm frmContact = new ContactForm();
int index = lstCustomers.SelectedIndex;
//If a customer is selected, export data for the selected customer to ContactForm
if (index != -1)
{
frmContact.ContactData = customerMngr.GetCustomer(index).ContactData;
}
if (frmContact.ShowDialog() == DialogResult.OK) //Show the ContactForm object
{
//The user has chosen the OK button - add the new customer object
customerMngr.AddCustomer(frmContact.ContactData); //??
UpdateCustomerList();
}
if (frmContact.ShowDialog() == DialogResult.Cancel)
{
return;
}
}
以及所谓的形式: 确定按钮。
private void btnOK_Click(object sender, EventArgs e)
{
if (ValidateInput())
{
this.DialogResult = DialogResult.OK;
this.Close();
}
}
取消按钮:
private void btnCancel_Click(object sender, EventArgs e)
{
if (MessageBox.Show("Do you want to cancel and discard all data?", "Cancel input", MessageBoxButtons.YesNo,
MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
{
this.DialogResult = DialogResult.Cancel;
this.Close();
}
}
当使用ContactForm中的OK按钮时,我希望它关闭,这有效。当我按下取消按钮,然后没有(在出现的框中),我希望表单保持打开状态,输入仍然完好无损。现在它不起作用。
有什么想法吗?
/马丁
答案 0 :(得分:1)
你的代码没问题。我认为问题在于你的Cancel Button
本身。我的意思是你可能(通过设计师或代码中的某个地方)DialogResul.Cancel
附加到按钮btnCancel.DialogResul
属性。要解决此问题,只需将其设置为DialogResult.None
。
如果我是对的,这就是关闭你的第二张表格。
有关详细信息,请参阅MSDN。