跨线程给devexpress grid控件赋值的场合,出现红叉
发表于2019-05-10
回复:0
查看:3045 |
需求:现有1个grid,每个cell中的值都由串口设备发送,cell接收值后自动跳到下一个cell。
做法:
串口设备类中定义
public delegate void SetTextCallBack(string data);
然后在主画面中通过委托把给cell设值的方法做参数。
scaleBase.GetTpData += new ScaleBase.SetTextCallBack(setScaleData);
//给cell设值的方法
private void setScaleData(string data)
{
this.bandedGridView1.SetFocusedValue(data);
}
问题:
在控制窗口边缘位置的cell接收值后自动跳到下一个cell的时候时出错。
(因为有多个cell,所以有横向滚动条。当cell不处于窗口边缘时没有问题。如果是窗口边缘的cell,如果移动滚动条使其不在边缘,也不会出错。)
控制代码如下:
newCol = this.bandedGridView1.Columns.View.VisibleColumns[m];
this.bandedGridView1.FocusedColumn = newCol;
异常信息如下:
System.NullReferenceException: 未将对象引用设置到对象的实例。
在 DevExpress.XtraGrid.Views.Grid.ViewInfo.GridViewInfo.UpdateCellAppearance(GridCellInfo cell, Boolean always)
在 DevExpress.XtraGrid.Views.Grid.Drawing.GridPainter.DrawRegularRowCell(GridViewDrawArgs e, GridCellInfo ci)
在 DevExpress.XtraGrid.Views.Grid.Drawing.GridPainter.DrawRegularRow(GridViewDrawArgs e, GridDataRowInfo ri)
在 DevExpress.XtraGrid.Views.Grid.Drawing.GridPainter.DrawRow(GridViewDrawArgs e, GridRowInfo ri)
在 DevExpress.XtraGrid.Views.Grid.Drawing.GridPainter.DrawRows(GridViewDrawArgs e)
在 DevExpress.XtraGrid.Views.Grid.Drawing.GridPainter.DrawContents(GridViewDrawArgs e)
在 DevExpress.XtraGrid.Views.Grid.Drawing.GridPainter.Draw(ViewDrawArgs ee)
在 DevExpress.XtraGrid.Views.Base.BaseView.Draw(GraphicsCache e)
在 DevExpress.XtraGrid.GridControl.OnPaint(PaintEventArgs e)
在 System.Windows.Forms.Control.PaintWithErrorHandling(PaintEventArgs e, Int16 layer)
在 System.Windows.Forms.Control.WmPaint(Message& m)
在 System.Windows.Forms.Control.WndProc(Message& m)
在 DevExpress.XtraEditors.Container.EditorContainer.WndProc(Message& m)
在 DevExpress.XtraGrid.GridControl.WndProc(Message& m)
在 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
在 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
在 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
希望哪位大神帮忙看下,谢谢。
登录 慧都网发表评论