组合框中的输入字符串格式不正确

时间:2014-06-26 15:04:20

标签: c# winforms parsing converter

我有Drop Down List。当索引发生变化时,我需要DDL的值。所以我这样做:

 private void CMBGroup_SelectedIndexChanged(object sender, EventArgs e)
        {
           int id=int.Parse(CMBGroup.SelectedValue.ToString());
           //do something with id
       }

form load我获取我的数据:

        goodGroups=objGoodGroupRepositoy.GetAll().ToList();
        CMBGroup.DataSource = goodGroups;
        CMBGroup.ValueMember = "Id";
        CMBGroup.DisplayMember = "Name";

我的数据库中有这样的数据:

id serial    name
1   121    g1
2   123    g2

但是在加载表单之前我遇到了这个错误:

Input string was not in a correct format

我在indexchange

DDL事件中遇到此错误
int id=int.Parse(CMBGroup.SelectedValue.ToString());

模特:

public partial class GoodGroup
    {
        public GoodGroup()
        {
            this.Goods = new HashSet<Good>();
        }

        public int Id { get; set; }
        public string Serial { get; set; }
        public string Name { get; set; }

        public virtual ICollection<Good> Goods { get; set; }
    }

2 个答案:

答案 0 :(得分:4)

您应该在DataSource之前设置DisplayMember和ValueMember属性。

更改DataSource后,或者在设置DataSource后更改DisplayMember或ValueMember时,绑定基础结构会强制控件重新绑定

另一种方法是在修改数据源时取消订阅/订阅事件。

答案 1 :(得分:0)

您可以只处理SelectionChangeCommitted事件,而不是处理SelectedIndexChanged事件。

处理此事件时,不必取消订阅和重新订阅事件处理程序,因为只有在通过选择更改组合框的值之后才触发事件处理程序,而不是在更改数据源之后触发。