gpt4 book ai didi

c# - 如何设置从其子窗体访问父窗体控件

转载 作者:行者123 更新时间:2023-12-05 06:42:13 25 4
gpt4 key购买 nike

我正在使用 Windows 窗体应用程序,我所知道的一切都已尝试过,但无法访问父窗体的子窗体控件。

到目前为止我尝试过的代码:

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

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

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

我试过为面板控件设置一个公共(public)属性:

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

但我得到的只是一个异常,“Onject Reference not set to an instance of an object”

EDIT1:这是我的表单的快照:

enter image description here

EDIT2:这就是我在 ContainerPanel 中添加表单的方式

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

最佳答案

如果我没理解错的话,我遇到了同样的问题。我对“ParentForm”一词感到困惑,而这个其他答案确实有助于解释我为什么做错了。

Whats the difference between Parentform and Owner

允许顶级表单与较低级别的表单共享控件:

1.) 在窗体设计器中,打开主窗体,选择要共享的控件,并将其修饰符设置为“内部”。

2.) 调用低级表单时,提供“this”作为 Show() 的所有者参数。

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

3.) 从较低级别的表单中,您现在可以引用 Owner 属性并将其转换回其类类型以按名称访问共享控件。

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

关于c# - 如何设置从其子窗体访问父窗体控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38001685/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com