我在datagridView 中加了这个方法
datagridView1_CurrentCellChanged(object sender, EventArgs e)
每次填充datagridView 的时候这个方法总是执行,导致报错,
有没有什么办法 只是只改变当前行时执行,而填充的时候不执行啊!!!!!
感谢!!!

解决方案 »

  1.   


    //填充前
    datagridView1.CurrentCellChanged -= new EventHandler(datagridView1_CurrentCellChanged);
    //填充后
    datagridView1.CurrentCellChanged += new EventHandler(datagridView1_CurrentCellChanged);
      

  2.   

    不是很明白你的意思
    换个事件,要不就在这个事件里加try catch
      

  3.   

    在这个方法里加个判断,如果是当前行执行,否则return
      

  4.   


    回1楼,加了还是不行,
    我是每次移动当前行时,都重新填充datagridView有没有方法 取消或清空datagridView1的数据绑定?
      

  5.   

     dataGridView1.DataSource = null;
      

  6.   

      private void dgvData_CurrentCellChanged(object sender, EventArgs e)
            {
               
                    int m = this.dgvData.CurrentRow.Index;
                    DataTable dt = (DataTable)dgvData.DataSource;
                    DataRow dr = dt.Rows[m];
                    strOrder_no = dr["order_no"].ToString().Trim();
                    this.filldateONtext(strOrder_no);           
            }
      private void filldateONtext(string text)
            {
                try
                {
                    string sql = "exec usp_get100RowOrder_no '" + text + "'";
                    DataSet ds = new DataSet();
                    SqlHelper.FillDataset(con, CommandType.Text, sql, ds, new string[] { "table0" });                
                    dgvData.CurrentCellChanged -= new EventHandler(dgvData_CurrentCellChanged);                                this.dgvData.DataSource = null;
                    this.dgvData.Refresh();
                    this.dgvData.DataSource = ds.Tables[0];
                    dgvData.CurrentCellChanged += new EventHandler(dgvData_CurrentCellChanged);
    }我现在第一次填充数据不报错了,可是我移动当前行的时候
    在 this.dgvData.DataSource = null;这句开始报错
    仍然报错“because it results in a reentrant call to the sercurrentcelladdresscore function”
                    
                  
    各位大侠救救                
                   
      

  7.   

    1.    SQL statement
    2.  传值的问题
    3.   用VS跟踪来查错误然后各各解决
      

  8.   

    设置个标志位 isLoaded 装载的时候为false 完了为true
      

  9.   

    if(dgvData.DataSource!==null)
    {
    //执行事件
    }
    或添加标识属性,动态添加datagridView1.CurrentCellChanged -= new EventHandler(datagridView1_CurrentCellChanged);