Такая проблема... Есть Форма на которой находится SplitContainer. На первой панели SplitContainer'а находится Button, на второй UserContorl. UserControl содержит три TextBox. Мне хотелось сделать, чтобы при Фокусе, TextBox меня стиль рамки на 3D, а при выходе на FixedSingle. Написал в котроле следующий код:
Imports System.Windows.Forms
Public Class UserControl1
Public Sub New()
InitializeComponent()
Dim ctl As Control = Nothing
For Each ctl In Me.Controls
If TypeOf ctl Is TextBox Then
AddHandler ctl.Enter, AddressOf TextBox_Enter
End If
Next
ctl = Nothing
End Sub
Private Sub TextBox_Enter(ByVal sender As Object, ByVal e As System.EventArgs)
Dim ctl As TextBox = Nothing
Me.SuspendLayout()
Try
ctl = sender
RemoveHandler ctl.Enter, AddressOf TextBox_Enter
RemoveHandler ctl.Leave, AddressOf TextBox_Leave
ctl.BorderStyle = Windows.Forms.BorderStyle.Fixed3D
ctl.BackColor = System.Drawing.SystemColors.Control
AddHandler ctl.Leave, AddressOf TextBox_Leave
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
ctl = Nothing
Me.ResumeLayout(False)
End Sub
Private Sub TextBox_Leave(ByVal sender As Object, ByVal e As System.EventArgs)
Dim ctl As TextBox = Nothing
Me.SuspendLayout()
Try
ctl = sender
RemoveHandler ctl.Enter, AddressOf TextBox_Enter
RemoveHandler ctl.Leave, AddressOf TextBox_Leave
ctl.Enabled = False 'иначе фокус не теряет при переходе по Tab'у
ctl.BorderStyle = Windows.Forms.BorderStyle.FixedSingle
ctl.BackColor = System.Drawing.SystemColors.Window
ctl.Enabled = True
AddHandler ctl.Enter, AddressOf TextBox_Enter
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
Me.ResumeLayout(False)
ctl = Nothing
End Sub
End Class
Так вот, проблема в следующем. Если щелкнуть по любому техбоксу, а потом по кнопке (Button), то все в порядке, TextBox теряет фокус, но если щелкнуть по техбоксу, а потом по Сплиттеру, то происходит переход Фокуса в следующий ТекстБокс....
Помогите разобраться... Читал МСДН, там написано про WM_KillFocus, но с API связываться неохота, так как не силен...
Исходный проект прилагается...