在Form C#外部单击后如何删除按钮边框?

时间:2018-12-14 17:56:36

标签: c# .net winforms winapp

我做了一个简单的按钮,但是当我在获胜表格之外单击时,我的按钮出现黑色边框。顺便说一下,我将BorderSize设置为“ 0”,当我在表单内部单击时,效果很好。

this.button.FlatAppearance.BorderSize = 0;

那是它的样子。

example

3 个答案:

答案 0 :(得分:0)

一个简单的解决方法是将Button的FlatAppearance.BorderColor设置为其Parent.BackColor

this.button1.FlatAppearance.BorderColor = this.button1.Parent.BackColor;

如果可以在某个时候将控件分配给另一个父级,则可以将该属性设置为订阅ParentChanged事件(或覆盖OnParentChanged,如果它是一个自定义控件)。

您还可以使用HandleCreated事件来批量执行相同的操作,并让所有Button(带有 FlatStyle = FlatStyle.Flat )在表单的构造函数中订阅该事件:

public Form1()
{
    InitializeComponent();
    foreach (Button button in this.Controls.OfType<Button>().Where(btn => btn.FlatStyle == FlatStyle.Flat))
    {
        button.HandleCreated += (s, e) => { 
            button.FlatAppearance.BorderColor = button.Parent.BackColor; 
        };
    }
}

答案 1 :(得分:0)

这似乎是一个焦点问题。当光标离开控件时,尝试重置焦点。

答案 2 :(得分:0)

将这些代码行添加到表单加载事件中。

 btn.FlatStyle = FlatStyle.Flat;//You can also use the popup flat style
 btn.FlatAppearance.BorderColor = btn.Parent.BackColor;
 btn.FlatAppearance.BorderSize = 0;