WinForm ComboBox SelectedValue 属性与 SelectedIndex
Posted
技术标签:
【中文标题】WinForm ComboBox SelectedValue 属性与 SelectedIndex【英文标题】:WinForm ComboBox SelectedValue property vs SelectedIndex 【发布时间】:2018-02-14 08:27:52 【问题描述】:我正在为组合框中的每个项目添加一个“索引”对象
foreach(索引中的变量索引) UniqueIndexComboBox.Items.Add(index);
当用户从下拉列表中选择一个索引项时,会触发以下事件。我不确定有什么区别。
private void UniqueIndexComboBox_SelectedValueChanged(object sender, EventArgs e) private void UniqueIndexComboBox_SelectedIndexChanged(object sender, EventArgs e)
当我整合以下属性时,SelectedValue 始终为 null,但我仍然可以通过使用 SelectedIndex 值作为项目列表的索引来访问选定的索引值。
使用 WinForm ComboBox,为什么会选择 ? UniqueIndexComboBox.Items[UniqueIndexComboBox.SelectedIndex] == null 错误的 ? UniqueIndexComboBox.SelectedValue == null 真的
为什么 SelectedValue 选项也不起作用? DropDownStyle 属性的值是否相关?
【问题讨论】:
SelectedValue
需要ValueMember
属性并且使用循环填充ComboBox
不会设置ValueMember
,您需要将索引作为数据源。
正如 Berkay 所说,SelectedIndex
属性是项目列表中当前选定项目的从零开始的索引,如果没有选择项目,则为 -1。不需要为值添加(数据库启发?)索引。有关详细信息,请参阅 MSDN 文档。如果SelectedIndex
>= 0,则UniqueIndexComboBox.Items[UniqueIndexComboBox.SelectedIndex]
始终为非空值,因为选择了一个项目。如果 'ComboBox' 是数据绑定的,则使用 SelectedValue
。
【参考方案1】:
SelectedIndex 是从零开始的索引号(间接位置号) SelectedValue 是所选项目的实际值(用户不可见)。在您的情况下, SelectedValue 始终为 null,因为您没有按如下方式提供它。
要实现 ComboBox 的 SelectedValue,组合框应该设置它的 DataSource 属性而不是 Items.Add() 方法
例如
var items = new List<object>();
for (int i = 1; i <= 10; i++)
items.Add(new Value = i, Text = "Text "+i );
comboBox1.DataSource = items;
comboBox1.DisplayMember = "Text";
comboBox1.ValueMember = "Value";
【讨论】:
以上是关于WinForm ComboBox SelectedValue 属性与 SelectedIndex的主要内容,如果未能解决你的问题,请参考以下文章
Multi-Select ComboBox 设置 Selected 属性 True
C# winform 编程下ComboBox 怎么给他绑定三个值?