单击另一个按钮时无法获得组合框选定的项目值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单击另一个按钮时无法获得组合框选定的项目值相关的知识,希望对你有一定的参考价值。

我有一个组合框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

等等

但没有得到解决方案。

请注意我需要在按钮上单击按钮时获取组合框的值,而不是cmb SelectionChange事件

答案

通过使用.Content.ToString(),整个事物被转换为字符串,并且您试图将此结果字符串转换为ComboBoxItem,这样的转换是不允许的,但是您可以将SelectedItem转换为ComboBoxItem然后从中获取值。尝试这样的事情:

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

另一答案
        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;
        //    }
        //}

这个怎么样?前者工作,但评论循环给我一个错误的铸造,尝试selectedindex但相同的结果,只有前者工作。

以上是关于单击另一个按钮时无法获得组合框选定的项目值的主要内容,如果未能解决你的问题,请参考以下文章

根据数据绑定组合框中的选定项目从访问数据库中删除

用于获取组合框的选定文本的 PHP 代码

Datagridview组合框未在单击/编辑时选择

将列表框选定的项目发送到不同 uwp 页面上的另一个列表框

如何在单击另一个视图(即按钮)时突出显示自定义列表视图

WPF延迟选择中的组合框