2016-05-18 22 views
0

選択が変更されるたびに、選択した項目のテキストをコンボボックスで取得したいと考えています。ComboBox SelectedIndexChangedイベント:なぜSelectedTextプロパティが変更されていないのですか?

したがって、SelectedIndexChanged eventを使用しますが、コンボボックステキストは変更されません。それは空のままです。

private void myCombobox_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      string myTxt = myCombobox.SelectedText; //myTxt is null. 
     } 

同じ項目を2回選択すると、それに応じてテキストが変更されます。

別のイベントを使用する必要がありますか? アイデア

+0

を使用する必要があり、現在の値を取得するためには、私はあなたがSelectedText'が何であるかを '理解してきたとは思いません。あなたが 'テキスト'を望むように聞こえる。 –

+0

SelectedTextの代わりにCombobox SelectedItemを使用します。 – Eins

+0

@Einですが、テキストが必要です。 – user3165438

答えて

0

あなたはあなたはこのような何かをしたいと思う選択された後、コンボボックス内のテキストを探している場合:

private void myCombobox_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     string myTxt = myCombobox.Text; 
    } 

これは、コンボボックスからすべてのテキストを取るだろうに、しませんDesignerで代理人を見ることを忘れて、実際にコンボボックスが変更された後に実際に発生することを確認してください。

+0

ありがとうございます。これは役に立たないようです。問題は、テキストが変更される前にインデックスが変更され、イベントが発生することです。何か案は? – user3165438

+0

コンボボックスからテキストをどこに適用しようとしていますか?ボタンクリックイベントなどを行っている場合は、必要な場所にmyCombobox.Textを使用するだけで、イベント時にはコンボボックスにあるものが適用されます。 @iDillion、ありがとうございます。 –

0

選択したインデックスのテキストが必要な場合は、SelectedTextではなく.Textプロパティを使用する必要があります。

値を選択した後は、SelectionChangeCommitedイベントを使用します。

はこれを試してみてください:

private void myCombobox_SelectionChangeCommited(object sender, EventArgs e) 
{ 
    string myTxt = myCombobox.Text; 
} 

あなたはまた、それがNULL値を解決するかどうかわからない、同様のSelectedItemテストすることができます。

string myTxt = myCombobox.SelectedItem.Text.ToString() 

しかし、私は後者が変換の問題にもっと使用されると思います。両方を試して、それがどのように機能するか教えてください。

+0

これは役に立たないようです。問題は、テキストが変更される前にインデックスが変更され、イベントが発生することです。何か案は? – user3165438

+0

@ user3165438ああ、申し訳ありませんが、私はあなたの質問を誤解しました、SelectedIndexChangedではなく_SelectionChangeCommit_イベントで実験しましたか?値が選択されると、SelectionChangeCommitが発生します。 – iDillon

+0

@iDillion、いいアイデア。私は試みた:私が選択を変更すると、テキストはまだ古い選択。新しい選択を2回選択した場合にのみ、新しいテキストが表示されます。何か案は? – user3165438

0

あなたが本当にComboBox.SelectedTextが必要な場合は(私はまた、あなたが慎重にhttps://msdn.microsoft.com/en-us/library/system.windows.forms.combobox.selectedtext(v=vs.110).aspxを決定する前に、このプロパティの説明を読むことをお勧め):

private void myCombobox_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    var originalValue = myCombobox.SelectedText; 

    var tempCb = sender as ComboBox; 
    if(tempCB != null) 
    { 
     var newValue = tempCb.SelectedText; 
    } 
} 
0
あなたが「SelectedTextを使用しているため、null値を取得するための理由がある

'プロパティ。あなたはTextプロパティにこの問題が解決されます

private void myCombobox_SelectedIndexChanged(object sender, EventArgs e) 
{ 
string cmbTextValue = this.myCombobox.text; 
} 

希望:)

+0

ありがとうございます。問題は今です:新しいテキストを取得するために新しい選択を2回選択する必要があります。何か案は? – user3165438

+0

あなたは、すべてのイベントがそこで処理されているurプログラムとリストの目的は何かを説明してください(コンボボックス) –

関連する問題