我尝试了所有我知道的事情。麻烦一定是我的文本框在一个组框中。我有一个Mainform,我可以从中移动到另一个表单。当我返回Mainform时,我想要一个特定的对象被聚焦。这是怎么做到的? 这是我在Mainform中的代码。
private void button1_Click(object sender, EventArgs e)
{
Form1 frm = new Form1();
frm.ShowDialog();
}
现在这就是我从Form1返回Mainform的方式。
private void button3_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.OK;
}
我在Mainform中有textBox1。如何在退出Form1并进入Mainform时将焦点设置为textBox1。我在Mainform textBox1.Focus();
,this.ActiveControl = this.textBox1;
,Load
和Show
事件下尝试了Activated
和Enter
。仍然没有奏效。我尝试创建一个公共方法,并在Form1的退出按钮下调用它。像这样。
在Mainform中,
public void textBox1Focus()
{
textBox1.Focus();
}
然后在Form1中,
private void button3_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.OK;
Mainform frm = new Mainform();
frm.textBox1Focus();
}
哪个仍然不起作用。我的textBox1在一个组框中。这可能是原因吗?
感谢。
答案 0 :(得分:6)
我不明白你所展示的代码是如何编译的。您从textBox1Focus()
类中定义的方法内部调用Form1
,我可以理解,该方法不包含textBox1Focus
的定义。该方法仅在Mainform
类中定义。
并且不,文本框放置在组框中并不会阻止它获得焦点。您的代码还有其他问题。这很难说;我觉得我正在通过百叶帘看日落,而不是通过一个大的画面窗口。
无论如何,我怀疑有一个更简单的解决方案。只需将焦点设置为button1_Click
方法末尾的文本框控件即可。 ShowDialog
方法是阻塞调用,这意味着在用户关闭第二个表单之后才会继续执行。当发生这种情况时,执行将继续下一行代码,这将把焦点设置为文本框控件。
尝试将代码更改为以下内容:
private void button1_Click(object sender, EventArgs e)
{
Form1 frm = new Form1();
frm.ShowDialog();
this.textBox1.Select();
}