【问题标题】:How can I assign the value of a selected item in a combobox?如何分配组合框中选定项目的值?
【发布时间】:2020-02-26 23:24:00
【问题描述】:

我有一个已经包含默认值的组合框,我想为组合框分配一个值,以便在运行时,分配的值显示为选中状态。

这是组合框

<ComboBox x:Name="MyComboBox" VerticalAlignment="Center" Width="50" Padding="1" Height="23">
     <ComboBoxItem IsSelected="True">A</ComboBoxItem>
     <ComboBoxItem>B</ComboBoxItem>
     <ComboBoxItem>C</ComboBoxItem>
     <ComboBoxItem>D</ComboBoxItem>
     <ComboBoxItem>E</ComboBoxItem>
     <ComboBoxItem>F</ComboBoxItem>
     <ComboBoxItem>G</ComboBoxItem>
     <ComboBoxItem>H</ComboBoxItem>
     <ComboBoxItem>I</ComboBoxItem>
     <ComboBoxItem>K</ComboBoxItem>
     <ComboBoxItem>L</ComboBoxItem>
     <ComboBoxItem>M</ComboBoxItem>
     <ComboBoxItem>N</ComboBoxItem>
</ComboBox>

我分配的值将是默认值之一。因此,我不想添加新项目。只是为了显示我指定为选中的项目。

这是我尝试但没有成功的方法:

//I get a value from reading a datareader

string MyValue = datareader.GetString(0);

// I assign the value to the combobox:

MyComboBox.SelectedItem = MyValue; //Attempt 1

MyComboBox.SelectedValue = MyValue; //Attempt 2

MyComboBox.Text= MyValue; //Attempt 3

MyComboBox.SelectedIndex = MyValue; //Attempt 4. Throws an error as MyValue is a string

感谢您的帮助!

【问题讨论】:

  • 这是一个 WPF 应用程序吗?
  • 是的。添加标签

标签: c# .net wpf combobox


【解决方案1】:

你试过这个方法吗:

在设计视图上使用 Visual Studio 或 .xaml,如果双击组合框,它将在 .xaml.cs 文件中自动生成 SelectionChanged 的代码。此外,在.xaml 上,当您单击组合框时,它会在属性选项卡上告诉您对象的名称。在这个例子中我的是组合框:

private void comboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    string selectedItem = comboBox.Items[comboBox.SelectedIndex].ToString();
    Console.WriteLine(selectedItem);
}

为简单起见,我只是将其打印到控制台,当您退出程序时会显示。

因此要在运行时更改组合框中显示的值,无论出于何种原因,您都可以使用以下内容:

comboBox.SelectedItem = comboBox.Items[0];

当用户进行任何选择时,它会将其设置为您添加到组合框中的第一个项目。

据我了解,您需要将文本分配给 ComboBox 中已有的项目:

string MyValue = "asd";
comboBox.Items.Add(MyValue);
comboBox.Text = MyValue;

【讨论】:

  • 谢谢。这工作得很好。只是跟进:我使用了这个Items.Add 方法。但是当将项目添加到组合框时,如果它已经存在于组合框中,有没有办法覆盖它?
  • @BrunoBukavuThai 您可以使用 comboBox.Items[i] = "new value"; 将 i 替换为项目的实例编号来覆盖组合框中已存在的项目
【解决方案2】:

我认为这不起作用,因为您要将 ComboBoxItems 添加到您的 ComboBox。尝试以编程方式将字符串添加为字符串,而不是 ComboBoxItems,看看是否有帮助。

如果你不想这样做,那么试试这个:

MyComboBox.SelectedItem = MyComboBox.Items.Select(i => i as ComboBoxItem).FirstOrDefault(i => (i.Content as string) == "The string you want to select");

编辑:这将选择与您输入的字符串内容相同的项目。

注意:你需要在for的顶部添加using System.Linq;

希望有帮助

【讨论】:

  • MyComboBox.Items.Select 中的 Select 抛出错误。我也尝试过MyComboBox.Items.Add(MyValue),但这只会将字符串添加到组合框而不默认选择
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多