2012-04-01 85 views
4

我的窗体上有一个按钮,应用了平面样式并使用了背景图像,我从按钮中删除了所有边框,但是当我从另一个控件上按下按钮时,黑色边框在按钮周围出现。删除选项卡上的按钮边框c#winforms

这可以在下图中看到。左边是右边带黑色边框的按钮是不同的按钮,但显示了取消按钮的外观。

Buttons

+1

可能重复:HTTP://计算器。 com/questions/148729 /如何设置变更删除焦点风格的按钮在c – 2012-04-01 17:21:19

+0

你必须做一些合理的事情来表明焦点。这是黑色矩形的意图。完全删除它只会让用户在使用您的用户界面时感到失落和沮丧。 – 2012-04-01 17:37:43

+0

我同意hans,即使你删除了边框,你应该考虑添加一个高光(对于焦点或其他更明亮的图像进行更改)。解决用户习惯的用户界面不是一个好主意,除非你100%确定你在做什么。 – 2012-04-02 14:04:26

回答

2

你必须使用IButtonControl作出新的按钮类,改变NotifyDefault为false:

base.NotifyDefault(false); 
3

我没有得到这个边界,如果我在FlatAppearance部分设置BoderSize0


进一步的调查显示,只有当按钮是默认按钮时才会出现此边框。你可以创建自己的按钮,就从来没有表现出这种边界这样

public class NoNotifyButton: System.Windows.Forms.Button 
{ 
    public override void NotifyDefault(bool value) 
    { 
    } 
} 

注:NotifyDefault仍有意空。

+0

嗨, 我尝试使用此处的方法(其突出显示的答案)http://social.msdn.microsoft.com/Forums/da-DK/winforms/thread/8d85e6dd-18ad-4503-9f0a-731a8d73d570 但问题仍然存在。 – shane12195 2012-04-03 00:30:05

+0

注意:有一个黑色边框,围绕默认按钮绘制,灰色边框围绕着焦点按钮绘制。我的代码使黑色边框消失;然而,灰色的仍然存在。 – 2012-04-03 15:02:34

0

您可以将按钮属性“ForeColor”设置为透明

0

您不必创建派生类。 您可以将ForeColor设置为与父控件BackColor相同。 如下:

btn1.ForeColor = btn1.Parent.BackColor; 
0

我设法解决这个问题通过设置按钮tab属性为False,然后使用此代码按钮单击事件

private void sendBackTab() 
     { 
      System.Windows.Forms.SendKeys.SendWait("+{TAB}"); 
     }