none
如何动态地引用控件 RRS feed

  • 问题

  • 假定form中有若干个textbox,name 分别为 textbox1,textbox2 .......textboxN

    如果焦点在 textboxN 上 ,则选择textboxN控件,对其进行操作

    问题:如何动态地引用控件?

    就是

    string strC = “TextBoxN” ;

    如何将strC动态转换成TextBoxN的引用

    2011年5月19日 3:42

答案

  • 使用 this.Controls.Find 方法 
    知识改变命运,奋斗成就人生!
    2011年5月19日 4:22
    版主
  • Find方法返回的是一个数组Control。如果只是在WinForm窗体上,那么建议这样做更为简单:

     private void Form1_Load(object sender, EventArgs e)
            {
                for (int i = 1; i < 11; i++)
                {
                    TextBox txt = new TextBox();
                    txt.Name = "txt"+i;
                    txt.Top = i * 20;
                    this.Controls.Add(txt);
                }

                //查找最后一个给其赋值
                (this.Controls["txt10"] as TextBox).Text = "aaa";
            }


    如果你有其它意见或私下交流,请发送邮件到:maledong@qq.com;或者请QQ我
    下载MSDN桌面工具(Vista,Win7)
    下载Technet桌面小工具(Vista,Win7)
    慈善点击,点击此处
    • 已标记为答案 ybgjj2009 2011年5月20日 2:01
    2011年5月19日 8:35
    版主

全部回复

  • 使用 this.Controls.Find 方法 
    知识改变命运,奋斗成就人生!
    2011年5月19日 4:22
    版主
  • Find方法返回的是一个数组Control。如果只是在WinForm窗体上,那么建议这样做更为简单:

     private void Form1_Load(object sender, EventArgs e)
            {
                for (int i = 1; i < 11; i++)
                {
                    TextBox txt = new TextBox();
                    txt.Name = "txt"+i;
                    txt.Top = i * 20;
                    this.Controls.Add(txt);
                }

                //查找最后一个给其赋值
                (this.Controls["txt10"] as TextBox).Text = "aaa";
            }


    如果你有其它意见或私下交流,请发送邮件到:maledong@qq.com;或者请QQ我
    下载MSDN桌面工具(Vista,Win7)
    下载Technet桌面小工具(Vista,Win7)
    慈善点击,点击此处
    • 已标记为答案 ybgjj2009 2011年5月20日 2:01
    2011年5月19日 8:35
    版主
  • 参考了楼上2位的解答,编写了以下的代码:

     

    string strTxt = “Txt1” ;

    controls [] ac = this.controls.find(strTxt,true) ;

    textbox tbox = ac[0] ;//该名字控件是唯一的

    tbox。text = “” ;

     

    注:楼上的  (this.Controls["txt10"] as TextBox).Text = "aaa"; 出现异常,即要 new 控件


    谢谢楼上二位
    2011年5月20日 2:33
  • 你好:)

    没有看懂你的意思,怎么会出现异常?我这里调试没有出现异常啊。

    请确认你的代码正确性,或者给出你生成TextBox的代码。

    或者你看我的代码,运行一下呢?我无任何异常。


    如果你有其它意见或私下交流,请发送邮件到:maledong@qq.com;或者请QQ我
    下载MSDN桌面工具(Vista,Win7)
    下载Technet桌面小工具(Vista,Win7)
    慈善点击,点击此处
    2011年5月20日 2:36
    版主