ComboBox SelectedIndexChanged事件:为什么SelectedText属性没有改变?

时间:2016-05-18 11:46:02

标签: c# winforms events combobox

每当选择更改时,我想在组合框中获取所选项目的文本。

因此我使用SelectedIndexChanged event,但组合框文本没有改变。它仍然是空的。

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

当我选择两次相同的项目时,文本会相应更改。

我应该使用其他活动吗? 有任何想法吗?

4 个答案:

答案 0 :(得分:0)

如果您在选择后在组合框中查找文本,那么您可能希望执行以下操作:

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

这将从组合框中获取所有文本,不要忘记在Designer中查看您的代表,以确保在更改组合框后实际发生这种情况

答案 1 :(得分:0)

如果您需要所选索引的文本,则必须使用.Text属性,而不是SelectedText。

对于选择值后,使用SelectionChangeCommited事件。

试试这个:

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

你也可以测试SelectedItem,不确定它是否能解决空值。

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

但我认为后者会更多地用于转换问题。试试两者,让我知道它是如何运作的。

答案 2 :(得分: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;
    }
}

答案 3 :(得分:0)

获取Null值的原因是因为您正在使用' SelectedText'属性。要获取当前值,您必须使用Text属性

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

希望这能解决问题:)