2013-07-04 54 views
1

我有一個小問題打開窗口2,我有form1在我button1button2和我form2這我能夠用兩個按鈕來打開。 Button1充當開放的form2並將詳細信息插入SQL DB中,這可以在form1 datagridview中看到。 Button2打開相同的form2,但它從form1中選擇數據並自動將它們填充到form2中的文本框中 - 它是編輯式的。從兩個按鈕(Form1中)及配套按鈕被點擊

當我創建button2(編輯按鈕)時出現問題,因爲form2不知道打開了哪個按鈕。

我以爲每次打開form2我都應該通過integer,所以當form2加載時,它應該決定從哪個按鈕開啓它並根據這個按鈕來操作。

有人能幫我解決這個問題嗎?

感謝

+0

的方法之一是實現Form2的兩種方法哪個做適當的配置和不是打電話展( )。從button1點擊調用第一個方法,從button2點擊第二個方法。或者您在Form2中創建一個屬性IsEditMode,它將在顯示之前正確配置Form2。 – wonko79

回答

1

個人申請你的邏輯,而不是通過按鈕或文本或布爾我會明確並創建一個枚舉 - 它傳遞給構造函數,所以你知道,如果你在編輯或顯示模式下。 (如果新的'模式'成爲要求,這會覆蓋你)。

public enum EditingType 
    { 
     Display, 
     Editing 
    } 

    public class Form2 
    { 
     private EditingType _editingType; 

     public Form2(EditingType editingType) 
     { 
      _editingType = editingType; 
     } 

     public void DoSomething() 
     { 
      if (_editingType == EditingType.Display) 
      { 
       // display mode 
      } 

      if (_editingType == EditingType.Editing) 
      { 
       // editing mode 
      } 
     } 
    } 

,並呼籲 - Form2 form2 = new Form2(EditingType.Editing); (傳遞編輯或顯示這取決於哪個按鈕,點擊你正在處理)

1

您應該創建一個)一個新的構造,這需要的按鈕引用(更好的名字,或任何你可以投入自己的閒置物業的「標籤」,以確定它們) 或b)的公共方法,您打開表單之前(但實例化之後)致電或c)在窗口2一個屬性,它可以採取任何你決定爲「計算微分東西使用。

好嗎?

1

定義一個新的構造在form2中,將一個字符串,調用按鈕的名稱作爲一個參數ter和from按鈕將該按鈕的名稱作爲參數發送到form2,並在form2中檢查名稱ButtonName參數表以檢測呼叫者按鈕。

2

你需要改變你的表格2的構造函數在不同的「模式」

就這樣打開你的表格:

Form2.cs

public Form2(bool fromButton2) 
    { 
     InitializeComponent(); 
     //Do whatever with that bool 
    } 

你打開你的形式是這樣的:

Form1.cs

private void button1_Click(object sender, EventArgs e) 
    { 
     Form2 frm = new Form2(false); 
     frm.Show(); 
    } 

    private void button2_Click(object sender, EventArgs e) 
    { 
     Form2 frm = new Form2(true); 
     frm.Show(); 
    } 

然後你可以用fromButton2布爾