如何消除点击按钮时周围出现的白线?
Posted shadowfish
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何消除点击按钮时周围出现的白线?相关的知识,希望对你有一定的参考价值。
如何消除点击按钮时周围出现的白线?
使用语言:VB.NET
原网站:
问题描述
在我用鼠标点击,然后弹出一个文件选择对话框前,按钮没有异常,但之后它的周围出现了一圈白线。
只有一句代码openFileDialog1.ShowDialog()
。
按钮的FlatStyle
属性为flat
,BackgroundImage
是一张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
或者,也可以自己重绘控件的边框:
(要注意的是ClientRectangle
的Width
和Height
必须被缩小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
以上是关于如何消除点击按钮时周围出现的白线?的主要内容,如果未能解决你的问题,请参考以下文章