欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 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属性为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