对话框结果按钮单击时始终返回“取消”

时间:2013-03-15 09:07:09

标签: c# dialog

我有一个表单PatientInformation,它有一个datagridview,用于显示数据库中的现有记录。我还有另一种表格来更新datagridview中的记录。

因此,我需要刷新datagridview以考虑更新。我在更新表单上有2个按钮(取消,更新)。现在的问题在于:我的Dialog结果即使在我点击“更新”按钮后也会返回“取消”。

我的表单还包含表单已关闭事件的方法。这是导致问题的原因吗?

我的主张声明如下:

diagResult = patientUpdateVlObject.ShowDialog();
if (diagResult.ToString() == "Update")
{
   dtgrdviewSearchOutput.Refresh();
   DipslayMessage("Record Updated Successfuly!!");
}
else
   //Do nothing.

和更新表单中的表单关闭方法如下:

private void PatientUpdate_FormClosed(object sender, FormClosedEventArgs e)
    {
        this.Dispose();
    }

2 个答案:

答案 0 :(得分:1)

您不应该使用diagResult.ToString() == "Update",因为当您这样做时,您将控件名称转换为字符串。

要解决此类问题,您应该将代码修改为:

private void buttonMessageBox_Click(object sender, EventArgs e)
{
    if (MessageBox.Show("Click \"OK\" if you agree with this", "MessageBoxTest", MessageBoxButtons.OKCancel)
        == DialogResult.OK)
    {
        MessageBox.Show("User clicked in \"OK\"");
    }
    else
    {
        MessageBox.Show("User clicked in \"Cancel\"");
    }
}

在此示例中,我删除了ToString方法,现在我将其与DialogResult.OK进行比较(MessageBox.Show方法返回一个DialogResult对象,因此您无法将其与字符串进行比较你做了)。

答案 1 :(得分:0)

当然,你正在检查名称:

http://msdn.microsoft.com/en-us/library/2chz8edb.aspx

        if (diagResult == DialogResult.OK)
        {
           dtgrdviewSearchOutput.Refresh();
           DipslayMessage("Record Updated Successfuly!!");
        }