c# - 如何访问 UserControl 上的控件?

标签 c# winforms dynamic user-controls

我已经创建了两个 UserControl(名为 UserControl1 和 UserControl2)并动态地将一个添加到面板:

UserControl yoozerControl;
if (pi != pie) {
    yoozerControl = new UserControl1();
} else {
    yoozerControl = new UserControl2();
}
panel1.Controls.Add(yoozerControl);
yoozerControl.Dock = DockStyle.Fill;

但是,我无法访问 UserControls 的成员。例如,UserControl1 有一个 TextBox1,但这不会编译:

UserControl yoozerControl;
if (pi != pie) {
    yoozerControl = new UserControl1();
    String s = yoozerControl.TextBox1.Text;
. . .

我必须做什么才能访问 UserControls 上控件的属性?

更新

// 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);
}

最佳答案

您需要将用户控件键入为您的控件。 UserControl1 或 UserControl2(不是 UserControl)

正如 Adam 所提到的,如果您还没有将内容公开访问,那么您也需要处理它。

关于c# - 如何访问 UserControl 上的控件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10919353/

相关文章:

c# - 通过字符串更改属性的状态

c# - 从 httpContext 获取 ASP.NET 表单字段的值时出现问题

c# - WinForms, CheckedListbox 自动列宽

c# - 在 C# 中是否有与 Groovy 等效的东西?

结构的 Swift 动态类型检查?

c# - ICSharpCode.TextEditor - 更改语法颜色

c# - 如何使用 BackGroundWorker 连续执行依赖于用户输入停止的方法?

.net - 总是使用 Form.Invoke() 是一种不好的做法吗?

c# - c#中图片框的图像之间的转换

javascript - 在网页底部和接近顶部之间动态调整元素的大小