2

我有两个表格 Form1 和 Form2。

在 Form1 中,我调用 Form2 并且我想拦截用户按钮单击选择。如果 Form2 上的用户单击“确定”或“取消”按钮,那么我尝试

var editForm = new Form2();
editForm.ShowDialog();
if (editForm.DialogResult == DialogResult.OK)
 {
      MessageBox.Show("ok btn is pressed!");
      editForm.Dispose();
 }
 else
 {
      MessageBox.Show("cancel btn is pressed!");
      editForm.Dispose();
 }

在 Form2 我有点击事件

private void BtnOk_Click(object sender, EventArgs e)
{
   _Repository.Create(mydata);
}

private void btnCancel_Click(object sender, EventArgs e)
  {
       Close();
  }

显示消息仅显示在取消按钮上,而不显示在确定上。我做错了什么?

4

2 回答 2

4

dialog result关闭前设置。

private void BtnOk_Click(object sender, EventArgs e)
{
     _Repository.Create(mydata);

     DialogResult = DialogResult.Ok;
     Close();
}

private void btnCancel_Click(object sender, EventArgs e)
{
     Close();
}
于 2013-10-18T09:08:03.810 回答
1

在您的 Form1 上:

  using (Form2 editForm = new Form2())
            {
                editForm.ShowDialog();
                if (editForm.DialogResult == DialogResult.OK)
                {
                    MessageBox.Show("ok btn is pressed!");
                    editForm.Dispose();
                }
                else
                {
                    MessageBox.Show("cancel btn is pressed!");
                    editForm.Dispose();
                }
            }

在 Form2 上:

    private void BtnOk_Click(object sender, EventArgs e)
    {
        _Repository.Create(mydata);
        this.DialogResult = DialogResult.OK;
    }

    private void btnCancel_Click(object sender, EventArgs e)
    {
        this.DialogResult = DialogResult.Cancel;
    }
于 2013-10-18T09:14:35.530 回答