C# 删除按钮上的虚线

C# 删除按钮上的虚线,c#,winforms,C#,Winforms,选择按钮时,如何删除按钮上显示的虚线(通过选项卡或单击按钮) 此问题适用于winforms——感谢您的帮助 编辑:我为重复的问题道歉。我确实在搜索答案,但我不知道这个问题是由于按钮的“焦点”造成的。因此,我没有找到合适的答案。查找按钮边框设置 如果我在FlatAppearance部分中将BorderSize设置为0,则不会获得此边框 从中,您是否尝试从按钮上移除焦点 只需调用Focus()

选择按钮时,如何删除按钮上显示的虚线(通过选项卡或单击按钮)

此问题适用于
winforms
——感谢您的帮助


编辑:我为重复的问题道歉。我确实在搜索答案,但我不知道这个问题是由于按钮的“焦点”造成的。因此,我没有找到合适的答案。

查找按钮边框设置

如果我在
FlatAppearance
部分中将
BorderSize
设置为
0
,则不会获得此边框


中,您是否尝试从按钮上移除焦点


只需调用
Focus()这是因为您的
按钮获得焦点。可以将其移除,但这意味着当按钮的焦点被触发时,将焦点交给其他对象

private void button1_Enter(object sender, EventArgs e)
{
    // give focus to something else
}
问题是您无法使用键盘来选择按钮(使用tab键)


此外,更正确的方法是将焦点赋予具有焦点的最后一个控件,而不是将固定的焦点传递给它。

创建自定义控件添加ShowFocusCues并生成以供使用

范例

public class button : System.Windows.Forms.Button
    {
        protected override bool ShowFocusCues
        {
            get
            {
                return false;
            }
        }
     }

您可以将
ShowFocusRectangle
peoperty设置为
false

这里唯一的答案是Wongsathon Tuntanakan的答案,它不需要破解(将焦点移动到另一个控件)

我参考了他的答案,另外,我将他的代码转换为VB:

Public Class YourButtonClass
    Inherits System.Windows.Forms.Button

    Protected Overrides ReadOnly Property ShowFocusCues As Boolean
        Get
            Return False
        End Get
    End Property
End Class

为什么这个问题被投票关闭?这是一个有效的问题。当“选择”按钮时。尝试在windows窗体应用程序中进行选项卡切换,直到选中按钮为止-您将看到我所指的虚线。您要问的是一种覆盖按钮控件的默认对焦行为的方法。您基本上必须对button的WindowProcedure进行子类或重写默认处理,以便在处理windows消息WM_Painth时可以自己绘制堆栈溢出的热情有时会令人震惊…从可访问的角度来看,您不应该删除显示焦点所在位置的UI。在这种情况下,仅使用键盘如何知道焦点在哪里?windows 8不会显示轮廓。但是它对7和XP是有效的。没有名为
ShowFocusRectangle
的属性。我猜您指的是DEV Express按钮。是的,我指的是DevExpress simpleButton。