C# 从子窗体访问父窗体上的控件
我想将父窗体上文本框中的文本从子窗体更改为文本。 我设置了文本框 修饰符=公共 我在parentform中额外编写了一个函数C# 从子窗体访问父窗体上的控件,c#,winforms,C#,Winforms,我想将父窗体上文本框中的文本从子窗体更改为文本。 我设置了文本框 修饰符=公共 我在parentform中额外编写了一个函数 public TextBox txtbox { get { return mybox; } set { mybox= value; } } 以儿童形式写作 这是我的父母表格。(看不到我的盒子)。 我错过了什么。 关于,由于ParentForm将返回一个表单而不是您的表单,因此您需要先强制转换它,然后才能访问任何自定义属性: ((
public TextBox txtbox
{
get
{
return mybox;
}
set
{
mybox= value;
}
}
以儿童形式写作
这是我的父母表格。(看不到我的盒子)。
我错过了什么。
关于,由于
ParentForm
将返回一个表单而不是您的表单,因此您需要先强制转换它,然后才能访问任何自定义属性:
((MyForm)this.ParentForm).textbox = "new text!";
此外,您正在设置整个控件,而不仅仅是文本
尝试此操作,以仅公开文本属性:
public string txtbox
{
get
{
return mybox.Text;
}
set
{
mybox.Text = value;
}
}
我认为问题在于ParentForm的类型Form没有成员txtbox。您需要将ParentForm强制转换为表单(假设它是Form1),如:
没有看到任何实际代码的随机猜测:mybox
可能未声明为公共
编辑:或者,啊,是的,正如Andrei所说-您没有将父窗体强制转换为父窗体的类型。只是一个注释,但这看起来像是一个设计出了问题。子窗体不应该访问父控件。正如Henk提到的,它不是一个实用的设计。尝试改用“事件”。子窗体意味着父窗体在其中包含另一个窗体?还是你在谈论遗产?
((Form1)this.ParentForm).txtbox