比方说,我有一个带有一些控件的用户控件,并且使该用户控件在表单内部可见。如何访问该用户控件中的特定控件?例如,以前,如果我在表单中有标签,则要做的只是label.Text =“ text”;但是我将如何更改位于表单内部的用户控件内部的标签文本(例如)?
答案 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";
}
}
我对如何设置权限等持有一些自由,但是希望这说明了您可以做的一种方式。另外,如果用户直接与用户控件进行交互,则可以在用户控件类内部设置逻辑。