2016-05-18 75 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

请你解释一下你在哪里处理所有事件的程序和列表的目的(组合框) –

相关问题