单击另一个按钮

时间:2017-02-01 07:34:15

标签: c# wpf exception combobox

我有一个组合框 cmbOptions 和一个按钮 btnShowItem

以及代码:

private void btnShowItem_click(object sender, RoutedEventArgs e)
{
    string item = ((ComboBoxItem)cmbOptions.SelectedItem).Content.ToString(); //Exception is here
}

以下是例外情况:

  

System.InvalidCastException :"无法转换类型' System.String'的对象输入' System.Windows.Controls.ComboBoxItem'。"

我已经浏览了很多这样的链接:

Cannot get ComboBox selected item value

ComboBox- SelectionChanged event has old value, not new value

Get selected value from combo box in c# wpf

等等等。

但没有得到解决方案。

请注意我需要在buttonclick上获取comboboxItem的值,而不是cmbSelectionChange事件

2 个答案:

答案 0 :(得分:6)

通过使用.Content.ToString(),整个事物将转换为字符串,并且您尝试将此结果字符串强制转换为ComboBoxItem,但不允许进行转换,但您可以将SelectedItem强制转换为ComboBoxItem a ComboBoxItem currentItem = (ComboBoxItem)cmbOptions.SelectedItem; // this will be the comboBoxItem string item =currentItem.Content.ToString(); // gives you the required string 然后从中获取值。尝试这样的事情:

string item =((ComboBoxItem)cmbOptions.SelectedItem).Content.ToString(); 

如果您将这两个步骤组合在一起,可以这样写:

SelectedItem

附加说明:

你仍然得到相同的异常意味着string item = cmbOptions.SelectedItem.ToString()将是一个字符串,尝试获取这样的值:DisplayMemberPath,这将发生,因为你可能会分配set(ax,'YDir','reverse');

答案 1 :(得分:0)

        for (int x = 0; x < cboType.Items.Count; x++)
        {
            cboType.SelectedIndex = x;
            var typeCombo = ((ComboBox)cboType);
            var valueType = ((ComboBoxItem)typeCombo.SelectedValue);

            if (thisProductInfo.Type == valueType.Content.ToString())
            {
                cboType.SelectedIndex = x;
                break;
            }
        }

        //for (int x = 0; x < cboColor.Items.Count; x++)
        //{
        //    cboColor.SelectedIndex = x;
        //    var colorCombo = ((ComboBox)cboColor);
        //    var valueColor = ((ComboBoxItem)colorCombo.SelectedValue);

        //    if (thisProductInfo.Type == valueColor.Content.ToString())
        //    {
        //        cboColor.SelectedIndex = x;
        //        break;
        //    }
        //}
这个怎么样?前者工作,但评论循环给我一个错误的铸造,尝试选择索引但相同的结果,只有前者工作。