2014-01-23 90 views
0

我想知道是否有一般的解決方案,當我有父窗體,並有兩個按鈕,例如新建和編輯..現在我不想創建兩個單獨的對話框,而是確定我點擊了一個按鈕或另一個按鈕,並在對話框中改變按鈕上的文本,功能以及從主窗體傳遞一些數據。Windows窗體中的條件對話框

感謝您的建議!

回答

3

創建一個表單,因爲(大部分時間)編輯和新的相同的實體將需要幾乎相似的接口。

在這種形式定義一個重載的構造函數接收參數是這樣的:

public MyForm() //for creating new record 
{ 
} 

public MyForm(int recordID) //For opening form with record based on the passed id 
{ 
} 

現在所說的這些構造從各自的按鈕。

在窗體本身上,您可以修改保存按鈕上的邏輯以查看窗體是否打開某個特定的ID或記錄ID爲null/0。相應地執行數據庫操作(INSERT/UPDATE)。

+1

嗯,這是真正的簡單解決方案,我也沒多想,但它的作品般的魅力,謝謝! – Mythago

0

您也可以爲form製作enum,然後針對哪種模式進行switch聲明。例如;

public partial class UserForm : Form 
{ 
    public enum UserFormMode {Edit, Add, Delete}; 
    private UserFormMode mode; 
    public UserForm() 
    { 
     InitializeComponent(); 
    } 

    public UserFormMode Mode 
    { 
     get { return mode; } 
     set 
     { 
      mode = value; 
      switch (mode) 
      { 
       case UserFormMode.Add: 
       // adjust your form 
       break; 
       case UserFormMode.Delete: 
       // adjust your form 
       break; 
       case UserFormMode.Edit: 
       // adjust your form 
       break; 
      } 
     } 
    } 
} 

而且從父窗體通話將包括:

UserForm dlg = new UserForm(); 
dlg.Mode = UserForm.UserFormMode.Edit; 
相關問題