Как изменить цвет и ширину текстового поля в winforms? - PullRequest
4 голосов
/ 30 декабря 2011

Хотелось бы узнать, как изменить цвет границы и ширину границы текстового поля, как показано ниже

Если это курсор мыши, мне нужно отобразить один цвет, а при нажатии мыши - другойцвет.

enter image description here

Может кто-нибудь объяснить мне подробный процесс с источником, если таковой имеется.

Заранее спасибо.

Ответы [ 2 ]

4 голосов
/ 30 декабря 2011

Вы можете сделать следующее:

  • Поместить TextBox внутрь Panel
  • Дать панели 1 пиксельный отступ
  • Установить текстовую док-станциюна Fill
  • Сделать текстовое поле без рамки

Затем обработайте события мыши в текстовом поле, переключите цвет фона панели между двумя вашими цветами, когдамышь входит / уходит.

Это не самый элегантный подход с точки зрения использования ресурсов / дескрипторов, но он должен работать без какого-либо пользовательского рисунка.

2 голосов
/ 19 февраля 2016

То же, что и выше, с небольшим поворотом.К сожалению, я не могу комментировать из-за своей репутации.

  • Сделать UserControl
  • Установить пользовательский контроль на все на 1
  • Положитьa Panel внутри usercontrol
  • Установить стиль закрепления панели для заполнения
  • Установить отступы панели на 6, 3, 6, 3 (слева, сверху, справа, снизу)
  • Поместить TextBox внутри панели
  • Установить стиль закрепления текстового поля для заполнения
  • Установить для стиля рамки текстового поля значение Нет

... тогда для свойств изменения цвета границы можно использоватьэто

Dim tbxFocus As Boolean = False

Private Sub tbx_GotFocus(sender As Object, e As EventArgs) Handles tbx.GotFocus

    tbxFocus = True
    Me.BackColor = Color.CornflowerBlue

End Sub

Private Sub tbx_LostFocus(sender As Object, e As EventArgs) Handles tbx.LostFocus

    tbxFocus = False
    Me.BackColor = SystemColors.Control

End Sub

Private Sub tbx_MouseEnter(sender As Object, e As EventArgs) Handles tbx.MouseEnter

    If tbxFocus = False Then Me.BackColor = SystemColors.ControlDark

End Sub

Private Sub tbx_MouseLeave(sender As Object, e As EventArgs) Handles tbx.MouseLeave

    If tbxFocus = False Then Me.BackColor = SystemColors.Control

End Sub

Это довольно очевидно.

...