如何消除点击按钮时周围出现的白线?

Posted shadowfish

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何消除点击按钮时周围出现的白线?相关的知识,希望对你有一定的参考价值。

如何消除点击按钮时周围出现的白线?

使用语言:VB.NET
原网站:


问题描述

在我用鼠标点击,然后弹出一个文件选择对话框前,按钮没有异常,但之后它的周围出现了一圈白线。
技术分享图片
只有一句代码openFileDialog1.ShowDialog()
按钮的FlatStyle属性为flatBackgroundImage是一张PNG格式的图像。
白线出现后,点击窗体它就会消除。


解答

一个简单的办法是把按钮的FlatAppearance.BorderColor属性设置成Parent.BackColor,即它的“容器”的背景色。这会重写焦点框。MouseUp事件可以被用来设置其值,它将在新窗口出现前被引发。

Private Sub SomeButton_MouseUp(sender As Object, e As MouseEventArgs) Handles SomeButton.MouseUp
    Dim ctl As Button = DirectCast(sender, Button)
    ctl.FlatAppearance.BorderColor = ctl.Parent.BackColor
End Sub

使用Control.Paint事件,我们也可以更改Control.BackColor属性来重绘边框,也可以用ControlPaint类中的DrawBorder方法(比使用ButtonRenderer类简单)

Private Sub SomeButton_Paint(sender As Object, e As PaintEventArgs) Handles SomeButton.Paint
    Dim ctl As Button = DirectCast(sender, Button)
    ControlPaint.DrawBorder(e.Graphics, ctl.ClientRectangle, ctl.BackColor, ButtonBorderStyle.Solid)
End Sub

或者,也可以自己重绘控件的边框:
(要注意的是ClientRectangleWidthHeight必须被缩小1像素)

Private Sub SomeButton_Paint(sender As Object, e As PaintEventArgs) Handles SomeButton.Paint
    Dim ctl As Control = DirectCast(sender, Control)
    Dim r As Rectangle = ctl.ClientRectangle
    Using pen As Pen = New Pen(ctl.BackColor, 1)
        e.Graphics.DrawRectangle(pen, r.X, r.Y, r.Width - 1, r.Height - 1)
    End Using
End Sub






以上是关于如何消除点击按钮时周围出现的白线?的主要内容,如果未能解决你的问题,请参考以下文章

flexbox 项目中的白线不会消失

ios 7底部的白线与UITextField

Leaflet.js网格的白线

react-native 中的 BottomTabNavigator 上方的白线

删除 UITableView 中部分标题下的白线?

使用导航控制器按下后退按钮后,如何防止先前的片段出现?