从其对象访问UserControls方法

时间:2009-09-13 23:37:09

标签: c# user-controls

我创建了一个名为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的用户控件,绝不是其他任何内容。我怎样才能以编程方式实现这一目标?

感谢。

1 个答案:

答案 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();
  }
}

一些替代方案:)