当前位置: 代码迷 >> .NET组件控件 >> DataGridView之UserControl遭遇Vista时的奇怪异常
  详细解决方案

DataGridView之UserControl遭遇Vista时的奇怪异常

热度:3895   发布时间:2013-02-25 00:00:00.0
DataGridView之UserControl遭遇Vista时的奇怪错误
用DataGridView,BindingSource,BindingNavigator构建的UserControl在Windows XP, Windows 2003 Server上运行得好好的(是在Windows 2003 Server + VS2005),客户端安装到Vista上时会出错:
Message:    BindingSource 不能是自己的数据源。请不要将 DataSource 和 DataMember 属性设置为循环引用 BindingSource 的值。
StackTrace:
   在 System.Windows.Forms.BindingSource.get_Count()
   在 System.Windows.Forms.CurrencyManager.get_Count()
   在 System.Windows.Forms.DataGridViewCell.GetValue(Int32 rowIndex)
   在 System.Windows.Forms.DataGridViewCell.get_Value()
   在 ThreadForLabelPrint() 位置 D:\CS Project\Warehouse Management System\WMS DMR Launch Manager\MainForm.cs:行号 6918

代码如下:
                foreach(DataGridViewRow dgvr in this.dbGridView12.dataGridView.Rows) 
              {
                    this.VarCompStock.PartNumber = dgvr.Cells["PartNumber"].Value.ToString();      //line: 6918
                    this.VarCompStock.MfgPartNumber = dgvr.Cells["MfgPartNumber"].Value.ToString();
                    this.VarCompStock.Manufacturer = dgvr.Cells["VendorCode"].Value.ToString();
                    this.VarCompStock.ComponentID = dgvr.Cells["ComponentID"].Value.ToString();

                    ......生成标签代码略
                }

一般一次可能要打印几十到几百张标签,DataGridView中的记录会同步移动。经常会打印完几十张标签后就出现此错误。但从出错的代码来看,仅仅是从DataGridView当前行的单元格中读取数据而已。百思不得其解,网上也查不到该问题。
------解决方案--------------------------------------------------------
补充:
DataGridView和BindingNavigator的DataSource都是BindingSource,面BindingSource的DataSource是DataSet, BindingSource的DataMember是DataSet中的一个表名称。
------解决方案--------------------------------------------------------
我也遇到这个情况,也是奇怪。
在WIN2003上运行正常得很,跑了几个月都没出错
但是换到WIN2008上就出这个错误了。
------解决方案--------------------------------------------------------
如果可以的话,请有心人指导一下。
------解决方案--------------------------------------------------------
我也遇到了这个问题,请问兄弟你解决了没?有没有什么解决方案?
  相关解决方案