[英]enable a disabled button by exiting off a form inside a form
好的,這就是我在做什么。
StartMenu表單具有button2-單擊按鈕2時,它將彈出一個新表單並被禁用。 現在啟動了新表格(InchMm轉換表格),當我完成該表格后,我按下了X按鈕。 完成此操作后,我希望從StartMenu窗體啟用Button2。 我的代碼如下。
開始菜單
private void button2_Click(object sender, EventArgs e)
{
this.IsMdiContainer = true;
InchMm_Conversion f = new InchMm_Conversion();
f.MdiParent = this;
f.Show();
button2.Enabled = false;
}
private void button3_Click(object sender, EventArgs e)
{
this.LayoutMdi(MdiLayout.ArrangeIcons);
}
public void enableB()
{
button2.Enabled = true;
}
InchMm轉換表格
private void InchMm_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
StartMenu.enableB();
}
現在,我收到一個錯誤,指出非靜態字段,方法或屬性需要對象引用。 現在我知道這應該是正確的,但是我仍然在學習很多東西,並且我覺得自己很親密。
我會嘗試這個
private void button2_Click(object sender, EventArgs e)
{
this.IsMdiContainer = true;
InchMm_Conversion f = new InchMm_Conversion();
f.MdiParent = this;
//Here you set an event. When the form closes the here specified method is called
f.FormClosed += f_FormClosed;
f.Show();
button2.Enabled = false;
}
private void button3_Click(object sender, EventArgs e)
{
this.LayoutMdi(MdiLayout.ArrangeIcons);
}
//This method is executed when the form is closed
void f_FormClosed(object sender, FormClosedEventArgs e)
{
button2.Enabled = true;
}
將InchMm_Conversion()
構造函數修改為InchMm_Conversion(StartMenuForm)
。 因此,您可以在構造中將“父”對話框傳遞給InchMm_Conversion。 將引用保存在私有字段中,然后在關閉子窗體時可以訪問它。 ( ReferenceToStartMenuForm.enableB()
)(我知道有更優雅的解決方案,但這很容易實現)
InchMm_Conversion(StartMenuForm form)
{
myForm = form;
}
private void InchMm_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
myForm.enableB();
}
private StartMenuForm myForm;
除了其他正確的答案外,我還建議其他解決方案。 因為您在子窗體中使用了IsMdiContainer
和MDIParent
(奇怪的是您在單擊按鈕時設置了MDI容器),所以您可以像這樣訪問父窗體:
private void InchMm_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
StartMenu form = this.MDIParent as StartMenu;
if(form != null)
form.enableB();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.