Инструмент Полоса Контейнер Инструменты Полоса Потерянный Фокус и Двойной Клик - PullRequest
0 голосов
/ 19 августа 2011

VB.Net 2008 Express Edition

«Form1» имеет ToolStripContainer1.TopToolStripPanel, который содержит ToolStrip с кнопками. Кнопки работают на ОДНОМ щелчке, когда «Форма1» активна. Если я нажимаю на другое окно и затем возвращаюсь к «Form1», кнопки ToolStrip занимают ДВА щелчка, чтобы активировать. Первый щелчок возвращает фокус «Form1», а последующий щелчок запускает событие кнопки. Я хочу, чтобы кнопки работали при первом нажатии и не требуют двух нажатий.

Обратите внимание, что обычные кнопки "Form1", которые не являются частью ToolStrip, работают при первом нажатии при возврате из другого окна / формы !!!! ????

1 Ответ

1 голос
/ 19 августа 2011

Это стандартное поведение.Вы можете видеть, что Microsoft Outlook делает то же самое, если у него нет фокуса, и вы нажимаете кнопку инструмента, которая видна на экране.

Но вы можете переопределить это поведение с помощью собственной версии:

Public Class ToolStripEx
  Inherits ToolStrip

  Private Const WM_MOUSEACTIVE As Int32 = &H21

  Public Sub New()
    MyBase.New()
  End Sub

  Protected Overrides Sub WndProc(ByRef m As Message)
    If m.Msg = WM_MOUSEACTIVE AndAlso Me.CanFocus AndAlso Not Me.Focused Then
      Me.Focus()
    End If
    MyBase.WndProc(m)
  End Sub

End Class
...