在Winforms ComboBox中,SelectedValuePath和SelectedValue的等价物是什么?

时间:2016-08-04 09:07:32

标签: c# winforms

有人知道从WPF组合框到WinForms的SelectedValuePathselectedValue是等价的吗?我尝试使用ValueMemberValue,但这不起作用......

2 个答案:

答案 0 :(得分:2)

以下是转化次数:

 WPF                       : WinForms

 .SelectedIndex            | .SelectedIndex
 .SelectedItem             | .SelectedItem
 .SelectedValue            | .SelectedValue
 .SelectedValue.ToString() | .SelectedText
 .SelectedValuePath        | .ValueMember

答案 1 :(得分:2)

在WPF中,SelectedValuePath获取或设置用于从SelectedValue获取SelectedItem的路径。它正是ValueMember在Windows窗体中提供的内容,它获取或设置属性的路径,以用作ComboBox项的实际值。

在Windows窗体中,如果要对ComboBox使用数据绑定,则应使用以下属性:

  • DataSource
    实现IList接口或Array的对象。
  • DisplayMember
    DataSource属性指定的集合中包含的对象属性的名称。如果对象上不存在指定的属性或DisplayMember的值为空字符串(“”),则会显示对象的ToString方法的结果。
  • ValueMember
    表示DataSource属性值的单个属性名称,或者解析为最终数据绑定对象的属性名称的句点分隔属性名称的层次结构。

  • SelectedValue
    包含ValueMember属性指定的数据源成员值的对象。

示例

在表单上放置ComboBoxButton并处理Load Form事件Click事件Button,如下所示。点击Button,您会看到ComboBox的所选项目将更改为 Two 。不要忘记为事件注册事件处理程序。

public class Category
{
    public int Id { get; set; }
    public string Name { get; set; }
}

private void Form1_Load(object sender, EventArgs e)
{
    var categories = new List<Category>()
    {
        new Category(){Id=1, Name= "One"},
        new Category(){Id=2, Name= "Two"},
        new Category(){Id=3, Name= "Three"},
    };

    this.comboBox1.DataSource = categories;
    this.comboBox1.DisplayMember = "Name";
    this.comboBox1.ValueMember = "Id";
}

private void button1_Click(object sender, EventArgs e)
{
    this.comboBox1.SelectedValue = 2;
}