如何消除点击按钮时周围出现的白线?
程序员文章站
2022-04-05 10:08:24
如何消除点击按钮时周围出现的白线? * 使用语言:VB.NET 原网站:https://*.com/questions/53862825/how-to-remove-the-white-lines-surrounding-a-button-appear ......
如何消除点击按钮时周围出现的白线?
使用语言: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