zoukankan      html  css  js  c++  java
  • vs2005,combox 数据绑定和SelectedIndexChanged事件触发 引发的问题

    昨天前天,都在折腾一个问题,vs2005里面自带的combox(winform)的问题.

    这个问题是这样的,我从数据库中读取出表中的数据,每行填充到预设的类中,再把这些类数据,填充到这个类的集合中,然后combox的dataSouce指向这个类集合.然后设置这个combox的显示和值为其名称属性和编号属性.

    这样没有问题.

    但当我在combox的SelectedIndexChanged事件中写了获取当前combox的已选择的类的编号属性的时候,发现总在报错.

    找了半天原因,才发现:

    combox的SelectedIndexChanged事件,在datasouce指定的时候就被触发了,这时候数据还没有绑定好,自然会报错.

    我认为这是不合理的.SelectedIndexChanged不应该在绑定数据的中间被触发.

    我最后解决办法是设置了一个标志符isLoaded,bool类型,在填充方法完毕后,设为true.允许SelectedIndexChanged被触发.

    代码如下:

    /// <summary>
            
    /// 绑定cmbdoc数据的方法
            
    /// </summary>
    private void FillCmbDoc()
            {
                
    //新建文档类的集合
                Class.ClassDocCollection items1 = new DocAddin.Class.ClassDocCollection();
                
    //提取所有文档数据,填充到集合
                items1.FillInAllDoc();

                cmbDoc.DataSource 
    = items1;
                cmbDoc.DisplayMember 
    = "S名称";
                cmbDoc.ValueMember 
    = "I编号";
                
    //设置标志符,true说明该combox已经绑定好了,允许SelectedIndexChanged事件被触发了.
                isLoaded = true;
               
            }

    private void cmbDoc_SelectedIndexChanged(object sender, EventArgs e)
            {
                
    //如果绑定完毕,并且选择的不为空
                if (cmbDoc.SelectedItem!=null && isLoaded==true)
                {
                    
    //获得文档类的编号
                    int docid = int.Parse(cmbDoc.SelectedValue.ToString());
                    
    //由编号从数据库中提取出该编号的文档类对象
                    Class.ClassDoc cd = new DocAddin.Class.ClassDoc(docid);

                    tbPath.Text 
    = cd.S路径;

                    
    if (tbName.Text.Trim()=="")
                    {
                        tbName.Text 
    = cd.S名称 + "-";                    
                    }
                }
            }
  • 相关阅读:
    spark连接MongoDB
    idea+scala+spark遇到的一些问题
    linux环境变量的配置
    sqoop的导入导出
    hive中一些常用的sql语句
    Unity 插件制作笔记(持续更新)
    linux-shutdown命令说明
    linux中的redis缓存服务器
    IceScrum敏捷开发工具的安装文档-官方最新版
    PHP设计模式系列
  • 原文地址:https://www.cnblogs.com/telephoner/p/708124.html
Copyright © 2011-2022 走看看