【问题标题】:MessageBox not providing expected DialogResultMessageBox 未提供预期的 DialogResult
【发布时间】:2013-06-24 10:35:30
【问题描述】:

我的表单中有一个简单的 OK/Cancel DialogResult 实例:

MessageBox.Show("Number of records affected:" + numberOfRecordsroll + " Please check the data is correct before proceeding:", "Please validate your changes", MessageBoxButtons.OKCancel);

DialogResult dr = new DialogResult();
if (dr == DialogResult.OK)
{
    // CommitTheChanges();
    MessageBox.Show("test", "test");
}
else if (dr == DialogResult.Cancel)
{
    //Do nothing
}

如您所见,如果用户单击“是”,则应调用方法 CommitTheChanges,但这并没有触发。此后我将其注释掉并进行了测试MessageBox.Show()。这又是行不通的。我在这里做错了什么?

【问题讨论】:

标签: c# .net winforms dialogresult


【解决方案1】:

您只是创建了一个新的 DialogResult 并忽略了对话框中的点击。相反,您需要从 MessageBox 获取 DialogResult

 String msg = "Number of records affected:" + numberOfRecordsroll + " Please check the data is correct before proceeding:";
 DialogResult dr = MessageBox.Show(msg, "Please validate your changes", MessageBoxButtons.OKCancel);

【讨论】:

    【解决方案2】:

    您已经比较了dr 的结果,它是DialogResult 的一个新实例,它没有引用当前的MessageBox

    您需要将当前消息框DialogResult 分配给博士。

    DialogResult dr;
    
    dr = MessageBox.Show("Number of records affected:" + numberOfRecordsroll + " Please check the data is correct before proceeding:", "Please validate your changes", MessageBoxButtons.OKCancel);
    
    if (dr == DialogResult.OK)
                        {
                           // CommitTheChanges();
                            MessageBox.Show("test", "test");
                        }
    

    【讨论】:

      【解决方案3】:

      注意new 关键字。

      当在reference type 上使用new 作为运算符时,您会立即在堆上创建一个新对象,而由MessageBox 产生的对象现在可以由垃圾收集器收集了。事实上,在这种情况下,您甚至没有从MessageBox 中捕获DialogResult

      这样的事情会起作用:

      DialogResult dr = MessageBox.Show("Number of records affected:" + numberOfRecordsroll + " Please check the data is correct before proceeding:", "Please validate your changes", MessageBoxButtons.OKCancel);
      
      if (dr == DialogResult.OK)
      {
          CommitTheChanges();
      }
      

      【讨论】:

        猜你喜欢
        • 2017-04-11
        • 2016-03-13
        • 1970-01-01
        • 1970-01-01
        • 2017-05-22
        • 2014-04-08
        • 2016-04-22
        • 1970-01-01
        • 2021-04-07
        相关资源
        最近更新 更多