2016-07-21 19 views
2

我想主窗體上禁用的按鈕(button3)時的第二,無模式的形式(Form2)被加載,然後重新啓用按鈕當無模式表單關閉時。禁用當形式被加載的按鈕並使得當窗體關閉

這裏是我試過:

private void button3_Click(object sender, EventArgs e) 
{ 
    Form2 p = new Form2(label1.Text); 
    p.Show(); 

    if (p.Shown) 
     this.button3.Click += new System.EventHandler(this.button3_Click); 
    else 
     this.button3.Click -= new System.EventHandler(this.button3_Click); 
} 
+0

button3.Enabled = FALSE;應該工作,如果它是相同的形式?! – jsls

+0

是的,但button3在form1中。我想加載form2然後可以解除按鈕3,然後當我關閉from2我想在form1中獲得button3 :( – xxxXXX

回答

2

實現,這將是禁用之前button3以顯示Form2的,並且使用Form2FormClosed事件的最好方法重新啓用button3一次形式關閉:

public partial class Form1 : Form 
{ 
    ... 

    private void button3_Click(object sender, EventArgs e) 
    { 
     // Instantiate the form and assign the FormClosed event 
     var form = new Form2(label1.Text); 
     form.FormClosed += Form2_FormClosed; 

     // Disable button3 
     button3.Enabled = false; 

     // Show the form 
     form.Show(); 
    } 

    // Occurs when Form2 is closed 
    private void Form2_FormClosed(object sender, FormClosedEventArgs e) 
    { 
     // Re-enable button3 
     button3.Enabled = true; 
    } 
} 

的另一種方法,即lambda表達式分配給FormClosed事件:

private void button3_Click(object sender, EventArgs e) 
{ 
    // Instantiate the form 
    var form = new Form2(label1.Text); 

    // Assign a lambda method to the FormClosed event to re-enable button3 
    form.FormClosed += (s, a) => button3.Enabled = true; 

    // Disable button3 
    button3.Enabled = false; 

    // Show the form 
    form.Show(); 
} 
+0

以及button3在Form1中 – xxxXXX

+0

我更新了答案,以明確上述方法在'Form1'中。沒有代碼需要添加到'Form2'。 –

+0

不能正常工作.. var form = new Form2(); Form2以紅色加下劃線 – xxxXXX

0

我做了類似的事情,我不知道你想做什麼,但也許它會幫助你。

public partial class Form2 : Form 
{ 
private void button3_Click(object sender, EventArgs e) 
{ 
    Button3.Enabled = false; 
    Form2 p = new Form2(label1.Text); 

    p.ShowDialog(); 


    //the code will stop here until you finish your work on form2 

    Button3.Enabled=true; 
} 

它與我合作。

但是如果你的form3只是一個短暫的標籤的使用:

Button3.Enabled= false; 
MessageBox.show ("blabla"); 
Button3.Enabled=true; 
+0

通過使第二個窗體成爲模式對話框,您已經有效地消除了禁用該按鈕的需要,因爲在第二個窗體關閉之前無法與其交互。我相信這個問題正在具體詢問無模式對話的情況。 –

+0

謝謝你的時間。有效! – xxxXXX

+0

有效答案:) – jsls

相關問題