欢迎光临 Rick 's BLOG
日志首页  | C# .Net编程  | 原创作品  | 生活点滴  | C\C++相关  | 多媒体相关※ERMP  | VB相关  | 其它运维与编程  |  留言簿
在 FlexGrid 控件中指定最右侧显示的列 CentOS 7.4 安装配置 jdk 8
未知  ComboBox 使用数据绑定时 Sorted 属性的bug
[ 发布日期:16年前 (2009-06-25) ]   [ 来自:rick@博客园 ] [分类:C# .Net编程]
调查一个奇怪的系统异常时发现的这个bug,现象就是用户在ComboBox里面选择一项后,程序在SelectIndexChanged 事件中根据用户选择刷新数据时出现错误。跟踪调试后才发现原来是SelectedValue 值和用户选择的Item项不一致。

但是为什么会出现这样奇怪的错误呢?
经过调查发现是因为设置了ComboBox的Sorted属性引起的。

重新的测试代码如下:

[复制到剪贴板]


private void comboBox1_SelectedIndexChanged
(object sender, EventArgs e)
{
       DataRowView drv = comboBox1.SelectedItem as DataRowView;
 
      label1.Text = string.Format("Value: {0} == {1} ?", comboBox1.SelectedValue, drv.Row["ID"]);
}

private void frmTest_Load(object sender, EventArgs e)
{
     DataTable dt = new DataTable();
     dt.Columns.Add("ID", typeof(int));
     dt.Columns.Add("Name", typeof(string));
     dt.Rows.Add(1, "f - 1");
     dt.Rows.Add(2, "e - 2");
     dt.Rows.Add(3, "d - 3");
     dt.Rows.Add(4, "c - 4");
     dt.Rows.Add(5, "b - 5");
     dt.Rows.Add(6, "a - 6");

     comboBox1.DataSource = dt;
     comboBox1.ValueMember = "ID";
     comboBox1.DisplayMember = "Name";            
}
 


引用通告地址 (0):
复制引用地址https://www.rickw.cn/trackback/231
复制引用地址https://www.rickw.cn/trackback/231/GBK
[ 分类:C# .Net编程  | 查看:3311 ]

暂时没有评论,快来发表一个评论吧。
发表评论
作者:   用户:[访客] 
评论:

表  情
禁止表情 | 禁止UBB | 禁止图片 | 识别链接
对不起,你没有权限上传附件!
验证:
 
PoweredBy R-Blog V1.00 © 2004-2024 WWW.RICKW.CN, Processed in second(s) , 7 queries    京ICP备17058477号-5