CF - 将焦点设置到特定控件

4

我有一个表单,其中一个面板包含一些文本框和复选框,但它们在面板外。 每次加载表单时,复选框都会获得焦点。

我已经编写了一个事件处理程序,在表单加载时尝试将焦点设置在第一个文本框上,而不是复选框上。

this.Activated += new EventHandler(form_Activated);

在这个方法中,我试图将焦点设置在面板中的第一个文本框上。
        private void form_Activated(object sender, EventArgs e)
    {
        if (this.parametersPanel.Controls.Count > 0)
        {
            this.parametersPanel.Focus();
            (this.parametersPanel.Controls[0]).Focus();
        }
    } 

这个不起作用,能有人帮我吗?

如果不破坏导航,您可以更改TabIndex,但是如果我理解正确,似乎当前出了问题。 - Don
@no9 - 我没有和你一样的问题,但我在找到在哪里添加调用Focus()方法的代码时遇到了一些麻烦。你的示例代码帮助了我解决这个问题。 - Shannon Wagner
5个回答

1

选项1:

将以下代码放在表单的加载事件中:

this.ActiveControl = myTextBox;

选项2:

将以下代码放在表单的加载事件中:

this.Show();
myTextBox.Focus();

只有当文本框可见时,Focus()函数才会起作用。


似乎紧凑框架不支持“ActiveControl”。 - reirab
@reirab 谢谢。我不知道那个。然而,只要对象可见,选项2仍应适用于任何框架。 - Victor Stoddard

1
尝试直接将焦点设置在文本框上,而不是使用面板控件索引。

parametersPanel是动态加载的。我没有一个属性引用面板中的控件... - no9

1
在设计模式下,选择您的控件并将其tabindex设置为0。

我试过了,但没有用!我尝试将parametersPanel的tabIndex设置为0,也尝试将tabIndex设置为动态加载到面板中的控件。我认为问题在于将焦点设置到另一个控件中的控件。 - no9

0

不要使用 Activated,请尝试使用 Shown


你的意思是什么?激活事件运行良好...可能也会像Shown一样。我遇到的问题是将焦点设置到面板内部的控件。 - no9

0

您可以使用Ahmet提供的解决方案。由于您希望文本框具有焦点...将选项卡索引设置为零即可。

此外,您还可以在表单加载事件中使用文本框的焦点方法来设置焦点...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接