winform中comboBox的一个疑问

火星大能猫 2013-05-02 11:26:15
自定义一个listitem

public class ListItem
{
private object key;

public object Key
{
get { return key; }
set { key = value; }
}
private object value;

public object Value
{
get { return this.value; }
set { this.value = value; }
}

public ListItem(){}
public ListItem(object okey, object ovalue)
{
this.key = okey;
this.value = ovalue;
}
}

然后绑定combobox
  ListItem itemNull = new ListItem("-1", "--所有--");
//主分类
{
List<MainMaterial> list = new MainMaterialDAL().GetAll();
foreach (MainMaterial model in list)
{
ListItem cmbItem = new ListItem(model.MainId, model.MainName);
cmbMain.Items.Add(cmbItem);
}
cmbMain.Items.Insert(0, itemNull);
cmbMain.SelectedIndex = 0;
}
cmbMain.ValueMember = "key";
cmbMain.DisplayMember = "value";


在SelectedIndexChanged
无法通过SelectedValue 获取对应的值,为null,但是
selecteditem as listem却可以获取,为什么呢?
不是已经设置display和valuemember了
为什么selectedtext和value都是空
?
...全文
154 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hbbliyong 2013-05-02
  • 打赏
  • 举报
回复
你从什么地方来的key和value,你定义成table试验下
_小黑_ 2013-05-02
  • 打赏
  • 举报
回复
引用 1 楼 bdmh 的回复:

            List<ListItem> list = new List<ListItem>();
            for (int i = 0; i < 10; i++)
            {
                ListItem item = new ListItem(i, i * 10);
                list.Add(item);
            }
            comboBox1.DataSource = list;
            comboBox1.ValueMember = "key";
            comboBox1.DisplayMember = "value";
上面这样绑定后,没问题啊,你不是没设置DataSource 啊
+1
火星大能猫 2013-05-02
  • 打赏
  • 举报
回复
引用 1 楼 bdmh 的回复:

            List<ListItem> list = new List<ListItem>();
            for (int i = 0; i < 10; i++)
            {
                ListItem item = new ListItem(i, i * 10);
                list.Add(item);
            }
            comboBox1.DataSource = list;
            comboBox1.ValueMember = "key";
            comboBox1.DisplayMember = "value";
上面这样绑定后,没问题啊,你不是没设置DataSource 啊
直接combobox additem不设置datasource的话,获取selectedvalue会有问题?
bdmh 2013-05-02
  • 打赏
  • 举报
回复

            List<ListItem> list = new List<ListItem>();
            for (int i = 0; i < 10; i++)
            {
                ListItem item = new ListItem(i, i * 10);
                list.Add(item);
            }
            comboBox1.DataSource = list;
            comboBox1.ValueMember = "key";
            comboBox1.DisplayMember = "value";
上面这样绑定后,没问题啊,你不是没设置DataSource 啊
狼烟辉 2013-05-02
  • 打赏
  • 举报
回复
key 和 value, 这个要和dataSource对应,不然无效。

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧