如何访问用户控件上的控件
本文关键字:控件 用户 访问 何访问 | 更新日期: 2023-09-27 18:36:22
我创建了两个用户控件(名为UserControl1和UserControl2),并将一个动态添加到面板中:
UserControl yoozerControl;
if (pi != pie) {
yoozerControl = new UserControl1();
} else {
yoozerControl = new UserControl2();
}
panel1.Controls.Add(yoozerControl);
yoozerControl.Dock = DockStyle.Fill;
但是,我无法访问用户控件的成员。 例如,UserControl1 有一个 TextBox1,但这不会编译:
UserControl yoozerControl;
if (pi != pie) {
yoozerControl = new UserControl1();
String s = yoozerControl.TextBox1.Text;
. . .
我必须执行哪些操作才能访问用户控件上的控件的属性?
更新
// I was able to successfully test this by changing UserControl1's TextBox1 Modifier
// property to public, and the same with UserControl2's label1 Modifier property.
UserControl1 yoozerControl = null;
UserControl2 yowzerControl = null;
String s = String.Empty;
if (AppType.Equals(SearchTypes.Platypus)) {
yoozerControl = new UserControl1();
s = yoozerControl.textBox1.Text;
} else {
yowzerControl = new UserControl2();
s = yowzerControl.label1.Text;
}
if (!(null == yoozerControl)) {
panel1.Controls.Add(yoozerControl);
yoozerControl.Dock = DockStyle.Fill;
MessageBox.Show(s);
}
if (!(null == yowzerControl)) {
panel1.Controls.Add(yowzerControl);
yowzerControl.Dock = DockStyle.Fill;
MessageBox.Show(s);
}
您需要将用户控件键入为"您的控件"。 用户控制 1 或用户控制 2(不是用户控制)
正如亚当所提到的,如果你还没有公开访问的东西,你也需要处理这个问题。
在适当地键入 yoozerControl 之后,如@Kenneth所说的 (+1 给他),您需要将这些文本框公开为用户控件的公共属性:
public TextBox yourTB{
get { return TextBox1; }
}
或者,为了更简洁一点,只需公开一个返回文本框文本的属性,这似乎是您所需要的。
public string yourTBsText {
get { return TextBox1.Text; }
}
在用户控件上,选择要公开的控件并查看属性窗口。 将"修饰符"属性更改为"公共",以使其具有最大的可见性。