【问题标题】:Not able to convert the value from Combo Box to Integer无法将值从组合框转换为整数
【发布时间】:2017-02-05 05:48:19
【问题描述】:

我正在尝试获取在其处理程序的组合框中选择的值,以便我可以根据值的每次更改进行一些操作。但我无法将值转换为整数。当我尝试将其转换为字符串并在控制台上打印时,如果所选值为 100000,则打印为“System.Windows.Controls.ComboBoxItem: 100000”。

请在下面找到 XAML 和处理程序代码。

<ComboBox x:Name="Scale" HorizontalAlignment="Left" Margin="660,15,0,0" Grid.Row="1" VerticalAlignment="Top" Width="60" Height="26" SelectionChanged="Scale_SelectionChanged">
    <ComboBoxItem Content="1" HorizontalAlignment="Left" Width="60"/>
    <ComboBoxItem Content="10" HorizontalAlignment="Left" Width="60"/>
    <ComboBoxItem Content="50" HorizontalAlignment="Left" Width="60"/>
    <ComboBoxItem Content="100" HorizontalAlignment="Left" Width="60"/>
    <ComboBoxItem Content="200" HorizontalAlignment="Left" Width="60"/>
    <ComboBoxItem Content="400" HorizontalAlignment="Left" Width="60"/>
    <ComboBoxItem Content="500" HorizontalAlignment="Left" Width="60"/>
    <ComboBoxItem Content="750" HorizontalAlignment="Left" Width="60"/>
    <ComboBoxItem Content="1000" HorizontalAlignment="Left" Width="60"/>
    <ComboBoxItem Content="2000" HorizontalAlignment="Left" Width="60"/>
    <ComboBoxItem Content="4000" HorizontalAlignment="Left" Width="60"/>
    <ComboBoxItem Content="5000" HorizontalAlignment="Left" Width="60"/>
    <ComboBoxItem Content="10000" HorizontalAlignment="Left" Width="60"/>
    <ComboBoxItem Content="20000" HorizontalAlignment="Left" Width="60"/>
    <ComboBoxItem Content="40000" HorizontalAlignment="Left" Width="60"/>
    <ComboBoxItem Content="50000" HorizontalAlignment="Left" Width="60"/>
    <ComboBoxItem Content="100000" HorizontalAlignment="Left" Width="60"/>
</ComboBox>

C#代码

private void Scale_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    Console.WriteLine(Scale.SelectedValue.ToString());
}

【问题讨论】:

标签: c# wpf combobox


【解决方案1】:

这是因为 ComboBox 中填充了一堆 ComboBoxItem 对象,并且由于未指定 SelectedValuePathSelectedValue 也将是一个 &lt;ComboBoxItem&gt; 对象。

解决此问题的一种简单方法是将SelectedValuePath 设置为"Content" 属性:

<ComboBox x:Name="Scale" 
          SelectionChanged="Scale_SelectionChanged" 
          SelectedValuePath="Content" ...>

这样,SelectedValue 将指向所选项目的ComboBoxItem.Content

【讨论】:

    【解决方案2】:

    在这种情况下可能会填充 SelectedItem 属性并且 SelectedValue 属性为 NULL。 所以试试这个

     Console.WriteLine(Scale.SelectedItem.ToString());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-19
      • 2015-02-20
      • 1970-01-01
      • 2015-10-22
      • 1970-01-01
      • 1970-01-01
      • 2020-03-31
      • 1970-01-01
      相关资源
      最近更新 更多