【问题标题】:How to remove focus from a single control?如何从单个控件中移除焦点?
【发布时间】:2011-01-11 07:06:17
【问题描述】:

在我的 C# WinForms 程序中,我有一个只有一个 Button 控件的表单。 默认情况下,该 Button 控件接收窗体上的焦点。但我不希望 Button 获得焦点。

是否有解决方案,甚至是需要调用非托管 API 的解决方案?

【问题讨论】:

    标签: c# .net winforms


    【解决方案1】:

    在您的表单Load 事件中,您可以将焦点设置在其他一些控件上。

    如果您不希望控件通过键盘获得焦点,您还可以将其TabStop 属性设置为 false。

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

    在 MSDN 上查看 TabIndexTabStop 属性的文档。

    【讨论】:

    • 如您所见,我在表单的 Load 事件中将按钮的 TabStop 属性设置为 false。有效。但是当用户点击按钮时,它会将焦点放在自己身上。如何再次失去它?我的表单上只有这个按钮(和一些标签)。谢谢。
    • @user434186,当用户单击按钮时,您可能有一些处理此问题的代码,只需添加一行以聚焦其中一个标签,例如:label.Focus(),它应该可以工作。
    • 啊!有用。当用户单击我设置在标签焦点上的按钮时。我不知道Label也能获得焦点!谢谢阿德里安!
    【解决方案2】:

    使用按钮的TabStop属性

    button1.TabStop = false;
    

    【讨论】:

    • 不适用于对象发送者private void button1_click(object sender, EventArgs e) { (sender as button).TabStop = false; }
    猜你喜欢
    • 1970-01-01
    • 2016-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多