Я устанавливаю свойства элемента управления 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, чтобы проверить, имеет ли элемент управления фокус, являющийся условием добавления границы, и просто покончим с этим?Я бы предпочел убрать автоматическую рамку из фокуса по любой причине:)