2012-01-10 6 views
0

私はテキスト入力のみを受け入れるためにドロップダウンなしでコンボボックスを使用しています。 Windowsフォーム上には、combobox.Textプロパティを使用する関数を呼び出すOKボタンがあります。WinformsのKeydownイベントの後にcombobox.Textを使用する方法

問題は、ユーザーが何かを入力してからEnterキーを押したときにこの関数を呼び出すことです。私はKeyDownイベントを処理しようとしています(私は他のイベントと同じ結果を試しました)が、このイベントが発生した後にcombobox.Textがnullになっています。

private void cbox_KeyDown(object sender, KeyEventArgs e) 
     { 
      if (e.KeyValue == 13) 
     { 
      OK(cbox.Text); 
     } 
    } 

なぜKeyDownイベントの後にcombobox.Textが消去されるのですか?この同じ問題はTextboxの権利では起こりませんか?私はほとんど絶望的ですが、私はプログラムのすべてのフォームでこのボックスを置き換えることはありません笑...助言してください!

答えて

1

フォームに複数のComboBoxがありますか?イベントはcboxですが、テキスト結果はcboから取得しています。

私はあなたがこれにコード変更を示唆している:

private void cbox_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.Enter || e.KeyCode == Keys.Return) 
    { 
      string result = cbox.Text; 
    } 
} 
+0

申し訳ありませんああ、いや、それは私ができるだけ明確にしようとした例では、単にタイプミスでした。 ComboBoxは1つしかありません。上記のコードは私のためにはうまくいかず、OK()が呼び出されるまでには、cbox.Textは空の文字列です。 – SWilliams

+0

上記の例を修正しました。 OK()メソッドを文字列result = cbox.Textに置き換えるとどうなりますか? ComboBoxの本文に他のイベントがありますか? –

+0

デバッグ時にこれを試してみました。結果はnullで、cbox.Text = ""これは私が見る限りです。私はコンボボックスに他のイベントがあるとは思わないが、KeyDownイベントで何らかの理由でテキストが消えてしまうようだ。 – SWilliams

関連する問題