1

我有这个问题......当我的表单打开时,一个按钮被聚焦。我不想让我专注。我在表单上放了一个不可见的小面板,并将其设置为起始焦点(也设置tabstop = false)。但仍然......按钮是集中的。

可能是什么问题呢 ?

我试过了 :

private void Form_Load(object sender, EventArgs e)
{
   panel.Focus();
}

但仍然没有任何反应,按钮仍然是焦点。

4

5 回答 5

3

Panel 控件派生自 ContainerControl。它为充当其他控件容器的控件提供了通用行为。其中包括不想成为焦点。如果您尝试给他们焦点,他们会立即将其传递给子控件。

这是有充分理由的,用户需要能够看到哪个控件具有焦点。所以他知道键盘敲击的去向。并且容器控件没有办法显示它。他们也没有通过击键做任何合理的事情。您当然可以修改面板控件以使其成为可聚焦的控件,此答案说明了如何。

但是请注意为什么要让用户感到困难。也许你有点关注焦点矩形的“瑕疵”?如果你真的想隐藏它,那么你可以,这很简单。只需添加一个虚拟按钮并给它一个负的 Location 属性和一个 0 的 TabIndex。这会将其移出窗口,不再对用户可见。但仍然能够集中注意力。解决了“瑕疵”问题,但存在严重混淆用户的风险。

于 2013-05-29T12:13:08.937 回答
1

您可以更改TabIndex您的控件,使其集中在您希望的顺序

于 2013-05-29T11:27:58.997 回答
0

我认为您的小组无法集中注意力。在您的面板中尝试一个控件。

于 2013-05-29T11:27:51.743 回答
0

如果您希望打开表单时按钮不具有焦点,则需要更正该TabIndex属性。该TabIndex属性有一个整数作为值,它指定按下 Tab 键时控件获得焦点的顺序。如果控件已TabIndex设置为 0,则将其更改为其他值。

或者

您还可以将控件TabStop属性设置为 false。

TabIndexTabStop属性的文档。

于 2013-05-29T11:34:26.773 回答
0

名为AcceptButtons 表单的属性将其设置为(none)

于 2013-05-29T11:34:55.380 回答