2013-06-24 25 views
0

我有一个简单的确定/取消DialogResult例如:的MessageBox不提供预期的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()。再次,这是行不通的。我在这里做错了什么?

+0

请您的具体问题,更新您的冠军。http://meta.stackexchange.com/questions/10647/how-do-i-write-a-好的标题 –

回答

7

您只是创建一个新的DialogResult并忽略对话框中的单击。相反,你需要从你相比dr其结果是DialogResult一个新实例,它没有提及当前MessageBox在MessageBox

0

得到的DialogResult。

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

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"); 
        } 
0

当心new关键字。

当使用new作为reference type上的操作符时,您立即在堆上创建一个新对象,并且由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(); 
} 
相关问题