我创建了一个名为AutorControl的UserControl,其方法是清除其文本框:
public void LimpiarAutorTextbox()
{
textBox1.Text = "";
}
然后我的意图来自另一个带有Panal的表单,使用for循环添加上述用户控件的X ammount。然后我想调用UserControls方法:“LimpiarAutorTextbox”(这只是一个清除文本框文本的方法)使用这样的foreach循环,但它不起作用。我不知道在这种情况下该怎么做:
AutorControl usercontrolAutorControl = new AutorControl();
private override void ClearControls()
{
txtTitulo.Text = "";
//Panel1 will only hold controls of the same type: "AutorControl"
foreach (Control X in panel1.Controls)
{
X as AutorControl;//?????? I want to access each created usercontrols' method.
}
}
该面板将始终保存AutorControl的用户控件,绝不是其他任何内容。我怎样才能以编程方式实现这一目标?
感谢。
答案 0 :(得分:2)
你的线路很好:
X as AutorControl
只需添加:
(X as AutorControl).LimpiarAutorTextbox()
应该这样做。
另外,我知道你说那里只会有AutorControls,但你可能想做更像这样的事情:
AutorControl currentControl == X as AutorControl;
if (AutorControl != null)
{
currentControl.LimpiarAutorTextbox();
}
或者,你可以改变for foreach循环的声明来为你做演员:
foreach(AutorControl currentControl in form.Controls)
{
if (currentControl != null)
{
currentControl.LimpiarAutorTextbox();
}
}
一些替代方案:)