簡體   English   中英

從其他 class 中查找表單實例

[英]find form instance from other class

我在 listBox 中有包含數據列表的主窗體。 單擊按鈕時,我正在打開新表單以創建新數據 object(主表單在后台處於非活動狀態),當提交新數據時,主表單內的列表框應填充新的 object。

我在想以下內容:

  1. 提交 Form2 時,我想找到 MainForm 實例並終止該實例,之后應該很容易,再次從數據庫加載數據列表並顯示在列表框中。

問題是:

如果創建了 Form1 並且在某些事件中使用 showDialog 實例化了 Form2,那么在提交數據之前 Form1 處於非活動狀態 如何在關閉 Form2 之前找到 Form1 實例?

那么,如何從 Form2 class 中找到 Form1 class 的實例呢?

謝謝

您可以使用Application.OpenForms屬性獲取對應用程序當前打開的任何表單的引用。 FormCollection Forms可以通過索引訪問,如下所示:

var form1 = Application.OpenForms[0];

或者通過表單的Name屬性,如下所示:

Form form1 = Application.OpenForms["Form1"];

希望這可以幫助。

獲得打開表單的實例后,我需要從該表單調用一個方法,所以這對我有用:

if (System.Windows.Forms.Application.OpenForms["Form1"] != null)
 { 
     Form1 form1 = Application.OpenForms["Form1"] as Form1;
     form1.yourMethodCall();
 }

如果你打電話

Form1.ShowDialog(this)

然后您將能夠獲得對調用表單的引用

this.Owner.Name

在第二種形式中(在您的情況下為 Form2)

請參閱http://msdn.microsoft.com/en-us/library/system.windows.forms.form.showdialog.aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM