FocusManager.SetFocusedElementメソッドがコンボコントロールに対して正しく動作しない
対象製品
InputMan for WPF 1.0J
詳細
次のようにWindowのLoadedイベントなどで、FocusManager.SetFocusedElementメソッドによりコンボコントロールにフォーカスをセットしても、画面表示時にコントロールにフォーカスがありません。
[Visual Basic]
Private Sub Window_Loaded(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded
FocusManager.SetFocusedElement(Me, GcComboBox1)
End Sub
[C#]
private void Window_Loaded(object sender, RoutedEventArgs e)
{
FocusManager.SetFocusedElement(this, gcComboBox1);
}
[Visual Basic]
Private Sub Window_Loaded(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded
FocusManager.SetFocusedElement(Me, GcComboBox1)
End Sub
[C#]
private void Window_Loaded(object sender, RoutedEventArgs e)
{
FocusManager.SetFocusedElement(this, gcComboBox1);
}
回避方法
次のようなコードで回避できます。
[Visual Basic]
Private Sub Window_Loaded(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded
Me.Dispatcher.BeginInvoke(New Action(Sub()
FocusManager.SetFocusedElement(Me, GcComboBox1)
End Sub))
End Sub
[C#]
private void Window_Loaded(object sender, RoutedEventArgs e)
{
this.Dispatcher.BeginInvoke((Action)delegate
{
FocusManager.SetFocusedElement(this, gcComboBox1);
});
}
[Visual Basic]
Private Sub Window_Loaded(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded
Me.Dispatcher.BeginInvoke(New Action(Sub()
FocusManager.SetFocusedElement(Me, GcComboBox1)
End Sub))
End Sub
[C#]
private void Window_Loaded(object sender, RoutedEventArgs e)
{
this.Dispatcher.BeginInvoke((Action)delegate
{
FocusManager.SetFocusedElement(this, gcComboBox1);
});
}