当动态创建textBox时,我们如何使其中一个textBox具有Focus()函数?
namespace Dinamik_Arac
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
for (int i = 1; i <= 5; i++)
{
TextBox txt = new TextBox();
Point txtKonum = new Point(300, i * 30);
txt.Location = txtKonum;
txt.Name = "TextBox" + i;
txt.Text = i.ToString();
this.Controls.Add(txt);
}
}
}
}
简单地将TextBox4.Focus()写入for循环是不起作用的。
for (int i = 1; i <= 5; i++)
{
TextBox txt = new TextBox();
Point txtKonum = new Point(300, i * 30);
txt.Location = txtKonum;
txt.Name = "TextBox" + i;
txt.Text = i.ToString();
if(i == 4)
{
txt.Focus();
}
this.Controls.Add(txt);
}
此代码也不起作用。enter image description here
如图所示,第4个textBox上没有光标。
2条答案
按热度按时间oprakyz71#
解决了,只需将
this.Controls.Add(txt);
代码放在if语句之前,ldioqlga2#
我一直在研究这个问题,寻找一种替代的、更通用的方法,我想出了这个方法来关注动态创建的文本框的第四次迭代:
在您的应用程序中,它将如下所示:
这种方法最明显的优点是它可以在程序的其他地方工作。当从一个单独的方法调用它时,唯一需要考虑的是,如果control.name不存在,则会抛出异常,因此为这种用法设置某种保护或异常处理可能是一个好主意。