2011-12-27 87 views
0

我有一个用户控件,里面有一个文本框,并且我在主窗体上使用了一个清除按钮来清除整个主窗口中的信息。我想清除用户控件中的文本框,一旦清除按钮被点击。我曾尝试在c#中引用控件的名称,然后是“。”但是文本框的名称不显示。任何帮助,将不胜感激!我如何清除用户控件中的TexBox(textbox.text)控件

我在很多方面都试过了,But..no结果:

private void button1_Click(object sender, EventArgs e) 

    { 
     for(int k = 0; k< this.Controls.Count;k++) 
     { 
      if(this.Controls[k] is MyUserControl) 
      { 
       MyUserControl _obj = this.Controls[k] as MyUserControl; 
       for (int i = 0; i < _obj.Controls.Count; i++) 
       { 
        if (_obj.Controls[i].GetType().ToString() == "TextBox") 
         (_obj.Controls[i] as TextBox).Clear(); 
       } 
      }  
     } 

还是我在创建一个用户控件的方法

 public void clear() 
     { 
     txtname.Text = String.empty; 
     } 

然后我从我目前的调用clear()方法形式像。

  usercontrol uc = new usercontrol(); 
     uc.clear(); 

但我无法事先予以

由于目前在用户控件中的文本。

回答

0

在内环改变这些线路

if (_obj.Controls[i] is TextBox) 
{ 
    TextBox clearTextBox = _obj.Controls[i] as TextBox; 
    clearTextBox.Text = String.Empty; 
} 
0
private void button1_Click(object sender, EventArgs e) 
      { 
      for (int k = 0; k < this.Controls.Count; k++) 
       { 
       if (this.Controls[k] is MyUserControl) 
        { 
        MyUserControl _obj = this.Controls[k] as MyUserControl; 
        for (int i = 0; i < _obj.Controls.Count; i++) 
         { 
         if (_obj.Controls[i] is TextBox) 
          { 
          ((TextBox)_obj.Controls[i]).Clear(); 
          } 
         } 
        } 
       } 
      } 
0

这将改善性能跳过循环来搜索文本框。并且可以灵活地在用户控制中使用多个文本框。

private void button1_Click(object sender, EventArgs e) 
     { 
     for (int k = 0; k < this.Controls.Count; k++) 
      { 
      if (this.Controls[k] is MyUserControl) 
       { 
       MyUserControl _obj = this.Controls[k] as MyUserControl; 
       if (_obj != null) 
        {((TextBox)_obj.FindControl("yourTextBoxID")).Text = string.Empty;} 
       } 
      } 
     } 
相关问题