作成日: 2024/01/19 最終更新日: 2024/01/31
文書種別
使用方法
詳細
コントロールの一部のイベントの処理で、下記のラッパーコントロールのFocusメソッド(またはSelectメソッド)を使用してフォーカス制御を行うと、フォーカスを取得時にこれらのラッパーコントロールのキー入力ができなくなる場合があります。
この現象はラッパーコントロールの内部構造に起因して発生するため、上記のラッパーコントロールの制限事項となります。
再現例
ラッパーテキストコントロールのEnterイベントで、ラッパー数値コントロールにフォーカスを移動するような処理を行うと、ラッパー数値コントロールにキー入力ができなくなります。
[Visual Basic]
回避方法
フォーカスを設定する処理を、以下のように非同期的に実行することで、この現象を回避できます
[Visual Basic]
- ラッパーマスクコントロール(Mask)
- ラッパー数値コントロール(Number)
- ラッパー日付コントロール(Date)
- ラッパータイムスパンコントロール(TimeSpan)
- ラッパー郵便コントロール(Postal)
この現象はラッパーコントロールの内部構造に起因して発生するため、上記のラッパーコントロールの制限事項となります。
再現例
ラッパーテキストコントロールの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();
}
関連情報