イベントでEnabledプロパティを操作した場合にテキストコントロールに入力ができなくなる

文書番号 : 26939     文書種別 : 不具合     最終更新日 : 2009/04/23
文書を印刷する
対象製品
InputMan for .NET 4.0J Windows Forms Edition
発生環境
動作環境と同じ
状況
回避方法あり
詳細
Leaveイベントで次コントロールのEnabledプロパティを操作した場合に、フォーカスはその次のコントロールに遷移せずに現在のコントロールに留まりますが、入力ができなくなってしまいます。
Validatingイベントでも同様の現象が発生することが確認されています。
回避方法
LeaveイベントでEnabledプロパティを操作するのではなく、LostFocusイベントで操作することでこの問題を回避することができます。 ただし、この方法を用いた場合には、フォーカスはその次のコントロールに遷移します。標準コントロールと同じ、フォーカスを現在のコントロールに留まる動作を希望する場合には、EnabledChangedイベントをハンドルする方法で回避します。EnabledChangedイベントを用いた回避方法は、ID:7181 [INMN06424] テキストコントロールで文字が入力できなくなる を参照ください。

[VB]
  ' 回避方法:LostFocusイベントで次コントロールのEnabledプロパティを操作します
  Private Sub Edit1_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles Edit1.LostFocus
    Edit2.Enabled = False
  End Sub
  
  ' LeaveイベントでEnabledプロパティを操作した場合は入力ができなくなります
  'Private Sub Edit1_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles Edit1.Leave
  '  Edit2.Enabled = False
  'End Sub

[C#]
  public Form1()
  {
    InitializeComponent();

    edit1.LostFocus += new System.EventHandler(this.edit1_LostFocus);
  }

  // 回避方法:LostFocusイベントで次コントロールのEnabledプロパティを操作します
  private void edit1_LostFocus(object sender, EventArgs e)
  {
    edit2.Enabled = false;
  }

  // LeaveイベントでEnabledプロパティを操作した場合は入力ができなくなります
  //private void edit1_Leave(object sender, EventArgs e)
  //{
  //  edit2.Enabled = false;
  //}
キーワード
INMN07335

この文書は、以前は次のバグレポートIDで公開されていました : 7942