繁体   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