ラッパーコントロールにフォーカスが設定されると、キーボードから入力ができなくなる場合がある
対象製品
InputMan for Windows Forms 8.0J
詳細
コントロールの一部のイベントの処理で、下記のラッパーコントロールのFocusメソッド(またはSelectメソッド)を使用してフォーカス制御を行うと、フォーカスを取得時にこれらのラッパーコントロールのキー入力ができなくなる場合があります。
ラッパーマスクコントロール(Mask)
ラッパー数値コントロール(Number)
ラッパー日付コントロール(Date)
ラッパータイムスパンコントロール(TimeSpan)
ラッパー郵便コントロール(Postal)
この現象はラッパーコントロールの内部構造に起因して発生するため、上記のラッパーコントロールの制限事項となります。
再現例
ラッパーテキストコントロールのEnterイベントで、ラッパー数値コントロールにフォーカスを移動するような処理を行うと、ラッパー数値コントロールにキー入力ができなくなります。
[Visual Basic]
回避方法
フォーカスを設定する処理を、以下のように非同期的に実行することで、この現象を回避できます
[Visual Basic]
この現象はラッパーコントロールの内部構造に起因して発生するため、上記のラッパーコントロールの制限事項となります。
再現例
ラッパーテキストコントロールのEnterイベントで、ラッパー数値コントロールにフォーカスを移動するような処理を行うと、ラッパー数値コントロールにキー入力ができなくなります。
[Visual Basic]
Private Sub Edit1_Enter(sender As Object, e As EventArgs) Handles Edit1.Enter Number1.Focus() End Sub[C#]
private void edit1_Enter(object sender, EventArgs e) { number1.Focus(); }
回避方法
フォーカスを設定する処理を、以下のように非同期的に実行することで、この現象を回避できます
[Visual Basic]
Private Sub Edit1_Enter(sender As Object, e As EventArgs) Handles Edit1.Enter ' フォーカス移動処理を非同期で実行します BeginInvoke(New MethodInvoker(AddressOf FocusNumber)) End Sub Private Sub FocusNumber() Number1.Focus() End Sub[C#]
private void edit1_Enter(object sender, EventArgs e) { BeginInvoke(new MethodInvoker(FocusNumber)); } void FocusNumber() { number1.Select(); }