【发布时间】:2011-02-19 15:54:14
【问题描述】:
我将我的 Winforms Button 控件属性设置为在网页上显示为超链接。除了 FlatAppearance 对象中的边框之外,我已经将所有内容都格式化了。我有代码充当伪 CSS(FormBackColor 是一个字符串常量。):
b.FlatStyle = FlatStyle.Flat
b.BackColor = ColorTranslator.FromHtml(FormBackColor)
b.ForeColor = Color.Blue
b.Font = New Font(b.Font.FontFamily, b.Font.Size, FontStyle.Underline)
b.Cursor = Cursors.Hand
Dim fa As FlatButtonAppearance = b.FlatAppearance
fa.BorderSize = 0
fa.MouseOverBackColor = b.BackColor
fa.MouseDownBackColor = b.BackColor
AddHandler b.MouseEnter, AddressOf ButtonMouseOver
AddHandler b.MouseLeave, AddressOf ButtonMouseOut
以下是鼠标移出/悬停功能,作为对正在发生的事情的参考:
Public Shared Sub ButtonMouseOver(ByVal sender As Object, ByVal e As EventArgs)
Dim b As Button = DirectCast(sender, Button)
Dim fa As FlatButtonAppearance = b.FlatAppearance
fa.BorderSize = 1
End Sub
Public Shared Sub ButtonMouseOut(ByVal sender As Object, ByVal e As EventArgs)
Dim b As Button = DirectCast(sender, Button)
Dim fa As FlatButtonAppearance = b.FlatAppearance
fa.BorderSize = 0
End Sub
代码从平面 Button 控件中删除边框,但在 MouseOver 上,我添加了一个 1 像素的边框。在 MouseLeave 上,我删除了边框。这是为了显示一些视觉反馈。当按钮没有焦点时,这可以正常工作。但是,如果我单击按钮,给按钮焦点,鼠标移出并再次显示按钮周围大于 1 像素的边框。我在想象它将按钮的显式 1 像素边框与传统的“Winform 按钮具有焦点,因此在按钮周围添加边框”边框相结合。
如何禁用/删除“Winform 按钮具有焦点,所以添加边框”边框?或者,我应该只检查 ButtonMouseOver 以检查控件是否具有焦点,作为添加边框的条件,然后就完成了吗?无论出于何种原因,我都希望从焦点中删除自动边框:)
【问题讨论】:
-
我无法为您解答,但您是否有理由尝试破解按钮来执行与构建 LinkLabel 相同的操作?