我使用兩種形式,當第二種形式出現時禁用第一種形式。當第二個窗體關閉時,我無法找到啓用第一個窗體的方法。 傳遞參數可能是一個解決方案,但我敢打賭有一個更簡單的方法。 首先,我想到在第二個析構函數上啓用第一個窗體,但不能這樣做。 任何人有任何建議?如何在使用第二種形式時更改第一種形式的屬性?
1
A
回答
2
您可以使用ShowDialog()顯示第二個窗體 - 窗體將顯示爲模態,第一個窗體僅在第二個窗體關閉時啓用。
對於未來的問題,你可以在第二種形式有現場有第一個實例,使用該實例,如果需要,例如,你可以使用自定義構造函數:由於已經提到
class SecondForm: Form
{
FirstForm _parentForm;
public SeconForm(FirstForm form)
{
InitializeComponent();
_parentForm = form;
}
void DoSomethingWithParent()
{
_parentForm.DoSomesting();
}
}
+0
它按我的預期工作。這解決了我的答案,但仍然在尋找未來類似問題的答案! – Bora 2012-08-13 13:38:29
2
,在這種特定情況下,使用模式對話框打開第二個表單可能很有意義。
爲了說明不適用的情況,已接受的最佳做法是先訂閱第二個表格的FormClosing
事件,並在事件處理程序中啓用「自己」並執行其他任何操作您可能想要因其他表單被關閉而執行此操作。這裏是一個簡單的例子:
public partial class ParentForm : Form
{
private void button1_Click(object sender, EventArgs e)
{
ChildForm child = new ChildForm();
child.FormClosing += new FormClosingEventHandler(child_FormClosing);
Hide();
child.Show();
}
private void child_FormClosing(object sender, FormClosingEventArgs e)
{
Show();
}
}
相關問題
- 1. 與第一種形式同時顯示的第二種形式
- 2. 如何在第二種形式打開時禁用第一種形式?
- 3. 用第一種形式提交第二種形式
- 4. 如何將值從第二種形式傳遞迴第一種形式在C#
- 5. 通過第一種形式在第二種形式上同時創建標籤
- 6. 從第三種形式打開第二種形式
- 7. 從第二種形式回到同一實例中的第一種形式
- 8. 第二種形式使用SerialPort
- 9. 如何刷新第二種形式
- 10. 如何關閉第一形態和調用第二種形式在C#
- 11. 第二種形式在調用時沒有顯示以第一種形式存儲的值
- 12. 多種形式onclick事件只適用於第一種形式
- 13. 第二種形式的關閉表格
- 14. 從第二種形式填充DataGridView
- 15. 如何將變量的值從第二種形式傳輸到第一種形式?
- 16. 如何通過第一種形式將輸出分配給第二種形式的標籤?
- 17. 第二種形式首先加載,直到第一種形式關閉時主窗體纔可見
- 18. 在VB.net中將第二種形式的返回輸入焦點轉換爲第一種形式
- 19. C# - 使用兩種形式,從第一種形式訪問變量
- 20. 德爾福 - AV錯誤時使用第二種形式
- 21. 如何將可見性窗口屬性從一種形式更改爲另一種形式?
- 22. 在第二種形式選擇後修改文本框的值?
- 23. 從一種形式移動到另一種形式,但停止第一種形式的代碼
- 24. ANDROID STUDIO:將數據從第一種形式傳輸到第二種形式的列表視圖
- 25. 如何在第二種形式的C#中傳遞id值?
- 26. 多種形式和屬性
- 27. 專注於第一種形式
- 28. 在禁用的第三種形式中顯示兩種形式的減號
- 29. 編程vb.net,第二種形式的文本框不會更新
- 30. 如何讓一種形式留在另一種形式上?
爲什麼不只是打開第二個窗體爲模態?當第二個窗體打開時,它將自動處理第一個窗體的暫停執行。 – 2012-08-13 13:32:11
請在StackOverflow上運行搜索,這個問題已經出現*很多。*您的第二個表單需要引用第一個表單,可以在其上調用方法或更改屬性。 – Adam 2012-08-13 13:34:28
@codesparkle你是對的,這裏有很多話題。看起來像創建自定義事件,代表是正確的軌道。 – Bora 2012-08-13 13:42:38