不要指定 ValueMember所绑定的Field,在SelectedIndexChanged 或者 SelectedValueChanged事件中,SelectValue直接转换为绑定类型,就能解决你所遇到的问题 回复 引用 查看
#2楼[楼主] 2011-02-12 10:25 寒关月
@%admin
刚刚忙完手头的事情试了一下你的方法,我不确定你最后说的在事件中直接转换是什么意思,但是你看下如下代码:
在事件调用的时候,并不能解决问题,一样依然会报错误。if条件还是>= 0.
是不是我理解错误?
如果还能看到这条回复的话还望不吝赐教 回复 引用 查看
#3楼 2011-02-12 12:24 %admin
我是跟你说绑定ComboBox的时候,只指定用于显示的DisplayMember就可以了,不用指定 ValueMember,这种在你的SelectedValue的类型就是你绑定的数据类型,明白吗? 你指定了ValueMember="CategoryId"的话,在DataSource绑定时刻所触发的事件中 SelectedValue都是绑定类型,只有你做了选择操作后SelectedValue的类型才是你绑定的 CategoryId的类型。 回复 引用 查看
#4楼 2011-02-12 12:34 %admin
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
class
Categor
{
public
int
Id
{
get
;
set
;
}
public
string
Name
{
get
;
set
;
}
}
private
void
Form1_Load(
object
sender, EventArgs e)
{
IList<Categor> categorlist =
new
List<Categor>();
categorlist.Add(
new
Categor() { Id = 0, Name =
"Google"
});
categorlist.Add(
new
Categor() { Id = 1, Name =
"Microsoft"
});
comboBox1.DataSource = categorlist;
comboBox1.DisplayMember =
"Name"
;
}
private
void
comboBox1_SelectedIndexChanged(
object
sender, EventArgs e)
{
Categor categor = comboBox1.SelectedValue
as
Categor;
if
(categor!=
null
)
{
MessageBox.Show(
string
.Format(
"{0}\r\n{1}"
, categor.Id, categor.Name));
}
}
|
#5楼 2011-02-12 16:17 无邪兮
去掉 cboCategory.ValueMember = "CategoryID";试试! 回复 引用 查看
#6楼[楼主]20253012011/2/12 22:18:02 2011-02-12 22:18 寒关月
晚上到家看到回复,仔细看了一下,我帖的那个图里我大意搞错了,DisplayMember和ValueMember位置弄反了。
感谢提示。因为这个的关系,一下子想明白所有之前没搞明白的部分了。非常感谢。