日期:2014-05-17  浏览次数:20885 次

看到了将窗体所有TextBox控件置0的,我想求一个更改Name的方法

如图,我有一个TabPage里面有很多个输入框,用来设置不同目录的,我希望窗体加载的时候Text下面的textBox的name自动变成上面label显示的文字,即textBox1.name=label1.Text;,这个数量都是对应的1对1,2对2
textbox 控件 历遍

------解决方案--------------------
引用:
Quote: 引用:

更建议你将lable和text组合到一起,做一个自定义组件
还不懂怎么组合到一起,请指教一下
另外不能根据控件编号来对应吗?比如label1对应textBox1,label2对应textBox2

可以根据编号来对应的。
如果你的窗体像顶楼那样,可以直接用下面的代码,这里面没有验证。

            Label[] arrLabel = this.Controls.OfType<Label>().ToArray();
            foreach (Label lbl in arrLabel)
            {
                string sIndex = lbl.Name.Substring(5, lbl.Name.Length - 5);
                Control[] arr = this.Controls.Find("textBox" + sIndex, false);
                {
                    TextBox txt = arr[0] as TextBox;
                    txt.Name = lbl.Text;
                }
            }


你也可以在此基础上,添加一些验证条件。

            Label[] arrLabel = this.Controls.OfType<Label>().ToArray();
            foreach (Label lbl in arrLabel)
            {
                //
                if (lbl.Name.Length > 5 && lbl.Name.Substring(0, 5) == "label")
                {
                    string sIndex = lbl.Name.Substring(5, lbl.Name.Length - 5);
                    int iIndex = 0;