C# DevExpress.XtraGrid.gridControl异常

程序中使用DevExpress.XtraGrid.gridControl用绑定datatable的方式显示数据,但显示时出现了异常,gridControl控件部分画了个大... 程序中使用DevExpress.XtraGrid.gridControl用绑定datatable的方式显示数据,但显示时出现了异常,gridControl控件部分画了个大叉。提示异常错误如下:
************** Exception Text **************
System.NullReferenceException:
Object reference not set to an instance of an object.
at
DevExpress.Utils.AppearanceObject.CalcDefaultTextSize(Graphics g)
at
DevExpress.XtraEditors.ViewInfo.BaseControlViewInfo.CalcTextSizeCore(GraphicsCache
cache, String text, Int32 maxWidth)
at
DevExpress.XtraEditors.ViewInfo.BaseControlViewInfo.CalcTextSizeCore(Graphics g,
String text, Int32 maxWidth)
at
DevExpress.XtraEditors.ViewInfo.BaseControlViewInfo.CalcTextSize(Graphics g,
Boolean useDisplayText)
at
DevExpress.XtraEditors.ViewInfo.ButtonEditViewInfo.CalcTextSize(Graphics g,
Boolean useDisplayText)
at
DevExpress.XtraEditors.ViewInfo.ButtonEditViewInfo.CalcBestFitTextSize(Graphics
g)
at
DevExpress.XtraEditors.ViewInfo.BaseEditViewInfo.CalcBestFit(Graphics g)

at DevExpress.XtraEditors.ViewInfo.TextEditViewInfo.CalcMinHeightCore(Graphics
g)
…………
现在问题不能再现了,想问一下有经验的高手,这种异常一般会是什么原因造成的呢?
展开
 我来答
乀柠檬最萌
推荐于2018-04-12 · TA获得超过1.6万个赞
知道大有可为答主
回答量:4550
采纳率:95%
帮助的人:432万
展开全部
1,增加新行用InitNewRow事件,给新行某字段赋值。后结束编辑。
private void grdView_InitNewRow(object sender, DevExpress.XtraGrid.Views.Grid.InitNewRowEventArgs e)
{
DevExpress.XtraGrid.Views.Grid.GridView view = sender as DevExpress.XtraGrid.Views.Grid.GridView;
view.SetRowCellValue(e.RowHandle, view.Columns["EnterID"], this.dS_MEnterStoreView.MEnterStore[0].ID);
this.grdControl.EmbeddedNavigator.Buttons.EndEdit.DoClick();
this.grdView.UpdateCurrentRow();
}
2,如果进行行验证,就在换行时时行,用grdView_FocusedRowChanged事件。
private void grdView_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
{
WsClient.WS_MEnterStore.DS_MEnterStoreView.MEnterDetailRow row = (WsClient.WS_MEnterStore.DS_MEnterStoreView.MEnterDetailRow)this.grdView.GetDataRow(e.FocusedRowHandle);

if (row != null)
{
if ((this.OperState == Common.Enum.TOperState.UnConfirmNew)
|| (this.OperState == Common.Enum.TOperState.UnConfirmEdit))
{
this.InitComboBoxValue(row, row.IsGoodIDNull()?0:row.GoodID, false);
this.InitBatchComboBoxValue(row, row.IsGoodIDNull()?0:row.GoodID, false);
}
}
}
3,如果需要改变行的某一列的同时改变其它的列用grdView_CellValueChanged事件。
private void grdView_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
{
if (this.grdView.FocusedColumn == e.Column)
{
if (e.Column == this.colAmount)
{
}
}
}
4,如果需在离开行的时候需要验证,则用grdView_BeforeLeaveRow事件。
yuanwei64
2013-08-29 · 超过47用户采纳过TA的回答
知道小有建树答主
回答量:153
采纳率:0%
帮助的人:134万
展开全部
空值。
我之前碰到过就是我在控件上定义了focusechanged事件,每次一绑定数据源就会触发,但是触发后取得的数据有异常(数据有空值)也出现大红叉。

其实没有什么一般原因造成异常,有异常就跟踪处理,捕获呗。 出什么异常就解决什么。

另外给个建议就是:所有操作的入口都带try catch 这样程序就不会当机了。catch里面加上日志文件,这样问题都好找
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式