【问题标题】:Accessing a UserControls methods from its object从对象访问 UserControls 方法
【发布时间】:2009-09-13 23:37:09
【问题描述】:

我已经创建了一个名为 AutorControl 的用户控件,并带有一个清除其文本框的方法:

public void LimpiarAutorTextbox()
        {
            textBox1.Text = "";
        }

然后我的意图是从另一个带有Panal的表单中,使用for循环添加上述用户控件的X量。然后我想使用这样的foreach循环调用UserControls方法:“LimpiarAutorTextbox”(这只是一种清除文本框文本的方法),但是它不起作用。我不确定在这种情况下该怎么做:

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 的用户控件,而不是其他任何东西。如何以编程方式实现这一目标?

谢谢。

【问题讨论】:

    标签: c# user-controls


    【解决方案1】:

    你的台词没问题:

    X as AutorControl

    只需添加:

    (X as AutorControl).LimpiarAutorTextbox()

    这应该可以解决问题。

    另外,我知道你说过那里只有 AutorControls,但你可能想做更多这样的事情:

    AutorControl currentControl == X as AutorControl;
    if (AutorControl != null)
    {
      currentControl.LimpiarAutorTextbox();
    }
    

    或者,您可以更改 foreach 循环的声明来为您执行强制转换:

    foreach(AutorControl currentControl in form.Controls)
    {
      if (currentControl != null)
      {
        currentControl.LimpiarAutorTextbox();
      }
    }
    

    一些替代品:)

    【讨论】:

      猜你喜欢
      • 2011-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多