【问题标题】:Remove button border on tab c# winforms删除选项卡上的按钮边框 c# winforms
【发布时间】:2012-04-15 12:36:04
【问题描述】:

我的表单上有一个应用了平面样式并使用背景图像的按钮,我已从按钮上删除了所有边框,但是当我从另一个控件上按到按钮时,按钮周围会出现黑色边框。

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

【问题讨论】:

  • 你必须做一些合理的事情来表明焦点。这就是黑色矩形的目的。完全删除它只会让用户在使用您的 UI 时迷失和沮丧。
  • 我同意 hans 的观点,即使你去掉了边框,你也应该考虑添加一个高光(图像改变,焦点上更亮或其他)。除非您 100% 确定自己在做什么,否则使用用户习惯的 UI 并不是一个好主意。
  • @Sean87 嗨,肖恩和汉斯,我打算在按钮被选中时添加一个突出显示,我会留下边框,只是它看起来不太好。

标签: c# winforms button tabs border


【解决方案1】:

您必须使用IButtonControl 创建一个新按钮类并将NotifyDefault 更改为false:

base.NotifyDefault(false);

【讨论】:

    【解决方案2】:

    如果我在FlatAppearance 部分中将BoderSize 设置为0,我没有得到这个边框。


    进一步调查表明,只有当按钮是默认按钮时才会出现此边框。您可以创建自己的按钮,它永远不会像这样显示此边框

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

    注意:NotifyDefault 故意留空。

    【讨论】:

    • 嗨,我尝试使用此处的方法(突出显示的答案)social.msdn.microsoft.com/Forums/da-DK/winforms/thread/… 进行此操作,但问题仍然存在。
    • 注意:有一个黑色边框,围绕默认按钮绘制,一个灰色边框,围绕焦点按钮绘制。我的代码使黑色边框消失;但是,灰色的仍然存在。
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

      btn1.ForeColor = btn1.Parent.BackColor;
      

      【讨论】:

        【解决方案5】:

        我设法通过将按钮 TabStop 属性设置为 False 并在按钮单击事件上使用此代码来解决此问题

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

        【讨论】: