2011-08-02 49 views
8

我有一個按鈕,單擊時,會打開一個對話框,其上有各種控件,如單選按鈕和文本框。如果確定,那麼該對話框中的值將被傳回到按鈕,其餘代碼將使用這些值進行處理。如果取消,則什麼也不做。C#中的自定義對話框?

我該怎麼做?我正在考慮使用這些控件製作另一個表單,並讓該按鈕調用新表單,但是我希望剩下的控件停止,直到表單完成,如同一個對話框一樣。

回答

31

1)創建你在談論的所有neccessary UI元素的形式。同時添加一個確定和取消按鈕。

2.)在「確定」和「取消」按鈕的屬性窗格中,分別將DialogResult值設置爲「確定」和「取消」。此外,您還可以將表單的CancelButton屬性設置爲您創建的「取消」按鈕的屬性。

3.)在對應於您想要返回的值的對話框中添加其他屬性。

4)要顯示的對話框中,執行沿着你可以做到這一點的

using(MyDialog dialog = new MyDialog()) 
{ 
    DialogResult result = dialog.ShowDialog(); 

    switch (result) 
    { 
    // put in how you want the various results to be handled 
    // if ok, then something like var x = dialog.MyX; 
    } 

} 
0

一種方法是在對話框中創建一個事件。根據您想要發回的值的數量,您可以在事件代理中添加參數。更好的方法是爲包含要返回的屬性列表的參數創建一個小類或結構體。

如果您單擊確定,則使用對話框中的值觸發事件。取消事件不會被解僱。

在帶按鈕的窗體中,爲事件掛鉤了一個處理程序。這會收到你的價值觀,然後你可以隨你做任何事情。

http://msdn.microsoft.com/en-us/library/aa645739(v=vs.71).aspx

+1

爲什麼通過增添了不少水暖代表什麼時候這是表單可以處理的東西? – dotnetnate

+0

誠然,通常有幾種方法可以實現。在這種情況下,對話框,委託和事件等都有公共屬性。例如。 http://www.codeproject.com/KB/cs/pass_data_between_forms.aspx我只是替代 – ScruffyDuck

+0

我可以走路去我家40英里遠的辦公室工作。這並不是一個好主意。並非所有想法都是平等創造的;) – dotnetnate

4

線的東西。創建一個新表單。從你的主要形式,你可以使用調用自定義表單:

CustomForm customForm = new CustomForm(); 
customForm.ShowDialog(); 

確保您添加相關的按鈕,自定義表單和他們的DialogResult屬性設置爲OK,取消或其他任何東西。

1

在處理對話框的代碼中的某處,您還可以顯式設置結果。例如,您可以將以下代碼放入按鈕單擊事件處理程序中。

OnOKButton_Click(object sender, EventArgs e) 
{ 
    this.DialogResult = DialogResult.OK; 
    this.Dispose(); 
} 
0
  • 按鈕添加到Windows窗體。我通常命名按鈕爲任一按鈕cmdOK或cmdCancel

enter image description here

  • 定義取消,並在對話框的形式確定按鈕

enter image description here