2016-09-05 70 views
0

我有兩種形式(Form1Form2)。每次窗體加載時都禁用按鈕

Form1還有一些其他控件在所有字段填充後都保存到數據庫中。它還有一個DELETE按鈕,您可以從數據庫中刪除搜索到的信息,並具有「可用房間」按鈕,點擊該按鈕將加載Form2

Form2有一些按鈕(空房),我可以從中選擇。現在,我的問題是如何在第二次或任何其他日子點擊「可用房間」並保留任何其他選定按鈕時(例如:102),在Form2上禁用該選定按鈕(例如:101)當Form2下次加載時禁用,等等。

爲了說清楚,我想讓Form2上的禁用按鈕處於活動狀態的唯一時間是當我單擊Form1上的DELETE按鈕時。但是,這個我做了。

+0

顯示你的代碼....不要問question.like這個 – ihemant360

+0

使用具有類作用域的一個布爾值。在bool中調整事件的真實性,然後在想要執行操作時將其設置爲閃爍,而不觸發事件 –

+0

在應用程序啓動時使用config,ini,xml文件從這些文件中讀取 – Kenyanke

回答

0

使用窗體加載事件 - https://msdn.microsoft.com/en-us/library/system.windows.forms.form.load(v=vs.110).aspx

當加載表格2,讀取數據庫。您已經知道房間按鈕需要被禁用時的情況。例如,爲了簡單起見,我們假設您可以將數據庫的一列讀入c#布爾值(稱爲「不可用」),並基於此可以決定該房間是否可用。所以,在你的表格2負荷(處理表單load事件),需要有一個條件一樣 -

Form_Load(System.Object sender, 
System.EventArgs e) 
{ 
    roomButton.Enabled = unAvailable; 
} 

因此,基於字段的值unAvailabled的roomButton啓用或禁用。

+0

我可以得到完整的代碼嗎,如果你不介意的話?提前致謝。 – Moni

+0

非常感謝。儘管如此,無法根據您的建議使用布爾值來解決問題,但我依賴於其他答案來獲得解決方案。 – Moni

1

當您啓動新的Form2時,保存表單變量並使用它來訪問它的值。您應該能夠訪問Form2上按鈕的button.Enabled屬性。

這是你的代碼在Form1上

Form2 secondForm; 

private void button_Clicked (object sender, EventArgs e) 
{ 
    if (secondForm != null) 
    { 
     secondForm.yourButton.Enabled = true; 
    } 
    // Any other code you want to handle 
} 
private void Form2_Closing (object sender, EventArgs e) 
{ 
    secondForm = null; 
} 

這是你應該做的,每次你打開/顯示窗體2:

secondForm = new Form2(); 
secondForm.Show(); 
secondForm.Closing += new System.EventHandler(Form2_Closing); 

編輯:感謝漢斯帕桑特!忘記了。如果窗體關閉,您還應該將secondForm的值設置爲null。編輯上面的代碼。

+0

中途。訂閱FormClosed事件並將* secondForm *設置回null。 –

+0

@HansPassant謝謝,編輯我的答案:) –

+0

@IanH,感謝您的意見和我試圖複製它,你能幫助我如何獲得Form1上的「Form2_Closing」事件嗎? – Moni

0

我必須說聲謝謝你的所有意見和答案。通過它們,我的思想開始思考,特別是使用Form2上的Form_Load事件,並且什麼時候做,它的工作就像一個魅力!!!!。

我在Form2_Load事件上做的所有事情是讀取數據庫中的Apartment_No列(按照每個貢獻者的建議),並使用每個值來禁用使用switch ... case的相應按鈕。

這裏是下面的代碼:

 private void Form2_Load(object sender, EventArgs e) 
    { 
     string constr = @"Data Source=DESKTOP-J6KRI77\SQLEXPRESS; Initial Catalog = SELLnBUY; Integrated Security = true"; 
     string cmdstr = "SELECT Apartment_No FROM Apartment"; 
     SqlConnection con = new SqlConnection(constr); 
     SqlCommand com = new SqlCommand(cmdstr, con); 

     con.Open(); 
     SqlDataReader r = com.ExecuteReader(); 


     while (r.Read()) 
     { 
      int room = int.Parse(r["Apartment_No"].ToString()); 

      switch(room) 
      { 
       case 101:    
         button1.Enabled = false; 
         break;      
       case 102:      
         button2.Enabled = false; 
         break; 
        case 103: 
         button3.Enabled = false; 
         break; 
       case 104: 
         button4.Enabled = false; 
         break; 

      } 
     } 
     con.Close(); 
相關問題