Как убрать белые линии вокруг кнопки, появляющейся при нажатии на нее - PullRequest
0 голосов
/ 20 декабря 2018

Работает нормально, пока я не щелкну по нему и не выведу диалоговое окно файла, а затем вокруг него не появятся белые линии.
Я не знаю, как удалить эти уродливые линии.

screen shot

Единственный код - openFileDialog1.ShowDialog().

Это кнопка, чей FlatStyle равен flat, а чей BackgroundImage является PNG изображением.
После этого появляются белые линии, и если я нажимаю на форму, она исчезает.

1 Ответ

0 голосов
/ 20 декабря 2018

Простой обходной путь - установить для кнопки FlatAppearance.BorderColor значение Parent.BackColor. перезапишет прямоугольник фокуса.Событие MouseUp может использоваться для установки значения, оно будет вызвано до открытия нового окна (событие Control.Leave никогда не будет вызвано):

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 class DrawBorder (проще, чем использование ButtonRenderer class):

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 должен быть уменьшен на 1 пиксель, как в Width, так и Height размерах. Это специально).

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...