簡體   English   中英

如何從它的子窗體設置訪問父窗體控件

[英]How to set Access a parent form control From it's child form

我正在使用 windows 窗體應用程序,所有我所知道的都嘗試過,但無法訪問父窗體的子窗體控件。

我到目前為止嘗試過的代碼:

this.ParentForm.Controls["PanelContainer"].Visible = false;

this.MdiParent.Controls["pnlContainer"].Visible = false;

Form myform = btnLogin.FindForm();
myform.Parent.Controls["PanelContainer"].Visible = false;

我曾嘗試為 Panel Control 設置公共屬性:

public Panel PanelContainer
{
    set { pnlContainer = value; }
    get { return pnlContainer; }
}

但我收到了一個異常,“未將 Onject 引用設置為對象的實例”

EDIT1 :這是我的表格的快照:

在此處輸入圖片說明

EDIT2 :這就是我在 ContainerPanel 中添加表單的方式

var login = new Login();
login.TopLevel = false;
login.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
PanelContainer.Controls.Add(login);
login.Show();

如果我理解正確,我遇到了同樣的問題。 我對“ParentForm”一詞感到困惑,而這個其他答案確實有助於解釋我為什么做錯了。

Parentform 和 Owner 有什么區別

允許頂級窗體與低級窗體共享控件:

1.) 在窗體設計器中,打開主窗體,選擇要共享的控件,並將其修飾符設置為“內部”。

2.) 在調用低級表單時,提供“this”作為 Show() 的所有者參數。

LoginForm login = new LoginForm();
login.Show(this);

3.) 從較低級別的表單中,您現在可以引用 Owner 屬性並將其轉換回其類類型以按名稱訪問共享控件。

((MainForm)Owner).PanelContainer.Visible = false;

Controls對象掀起了Control是一個集合,是指數接近。

this.ParentForm.Controls[0].Visible. . .

您引用的名稱將在以下內容中:

this.ParentForm.Controls[0].Name

確保父窗體中的控件設置為公共。 之后,訪問該控件就像

ParentForm frmParentForm= (ParentForm)Application.OpenForms["ParentForm"];
frmParentForm.YourControlName

暫無
暫無

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

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