2013-06-24 35 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(); 
} 
相關問題