2016-05-18 69 views
0

我希望在選擇更改時在組合框中顯示所選項目的文本。因此我使用SelectedIndexChanged event,但組合框文本沒有更改。它仍然是空的。ComboBox SelectedIndexChanged事件:爲什麼SelectedText propery沒有改變?

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

正當我選擇兩次相同的項目時,文本會相應地改變。

我應該使用另一個事件嗎? 任何想法?

+0

我不認爲你已經瞭解SelectedText'是什麼'。聽起來你想要'文字'。 –

+0

使用組合框SelectedItem代替SelectedText – Eins

+0

@Eins,但我需要文本。 – user3165438

回答

0

如果您正在尋找被選中後,那麼你會想要做這樣的事情是在組合框中的文字:

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

這將採取所有文字從ComboBox,不忘記查看設計器中的委託以確保在組合框更改後實際發生這種情況

+0

謝謝。這似乎沒有幫助。問題在於,在文本更改之前,索引已更改並且事件被觸發。有任何想法嗎? – user3165438

+0

你在哪裏試圖應用組合框中的文本?如果你正在做一個按鈕點擊事件或類似的事情,你可以在任何你需要它的地方使用myCombobox.Text,並且事件發生時組合框中的任何東西都將被應用。 –

0

如果您希望選定索引的文本必須使用.Text屬性,而不是SelectedText。

對於在選定值後使用SelectionChangeCommited事件。

試試這個:

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

您還可以測試的SelectedItem爲好,不知道這會解決一個空值。

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

但我認爲後者將被用於更多的轉換問題。試試兩個,讓我知道它是如何工作的。

+0

@iDillion,謝謝。這似乎沒有幫助。問題在於,在文本更改之前,索引已更改並且事件被觸發。有任何想法嗎? – user3165438

+0

@ user3165438啊,對不起,我誤解了你的問題,你有沒有嘗試用_SelectionChangeCommit_事件而不是SelectedIndexChanged?SelectionChangeCommit將在選擇該值後觸發。 – iDillon

+0

@ iDillion,好主意。我試過:當我改變選擇時,文本仍然是舊的選擇。只有當我選擇新的選擇兩次,我纔會得到新的文本。有任何想法嗎? – user3165438

0

之所以越來越Null值是因爲你使用的是「SelectedText '財產。爲了獲取當前值,您必須使用Text屬性

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

希望,這將解決這個問題:)

+0

謝謝。現在的問題是:我必須選擇新的選擇兩次才能獲得新的文本。有任何想法嗎? – user3165438

+0

請你解釋一下你在哪裏處理所有事件的程序和列表的目的(組合框) –

相關問題