如何访问用户控件中的特定控件?

时间:2019-02-22 21:21:25

标签: c# winforms user-controls

比方说,我有一个带有一些控件的用户控件,并且使该用户控件在表单内部可见。如何访问该用户控件中的特定控件?例如,以前,如果我在表单中有标签,则要做的只是label.Text =“ text”;但是我将如何更改位于表单内部的用户控件内部的标签文本(例如)?

2 个答案:

答案 0 :(得分:1)

在用户控件中创建一个公共方法,然后从表单中调用它:

public void SetCaption(string caption)
{
    label1.Text = caption;
}

现在以您的形式:

userControl1.SetCaption("text");

要按照注释中的建议访问控件本身,可以在用户控件中创建一个公共属性,该属性返回所需的控件:

public Label MyLabel {get { return Label1; }}

,然后按照您的形式:

userControl1.MyLabel.Text = "text";

答案 1 :(得分:0)

我不确定您的情况,因此以下是我的解释的解决方案:

通常,当您拥有大量相同类型的UIElement时,将使用用户控件。例如,我可能会将所有这些添加到堆栈面板中。如果我在用户控件类中有一个公共ID,则可以查找该特定ID并修改其文本。

MyUserControl.xaml.cs:

//ATextBox is a named Control
public MyUserControl(int ID)
{
    InitializeComponent();
    this.ID = ID;
    ATextBox.Text = "Something";
}

MainWindow.xaml.cs:

//MyStackPanel is a named Control
foreach (MyUserControl muc in MyStackPanel.Children)
{
    //ID is public get, private set
    if(muc.ID == 123456)
    {
        muc.ATextBox.Text = "Something Else";
    }
}

我对如何设置权限等持有一些自由,但是希望这说明了您可以做的一种方式。另外,如果用户直接与用户控件进行交互,则可以在用户控件类内部设置逻辑。