c# - 无法将类型“system.reflection.fieldinfo”隐式转换为“devexpress.dataaccess.excel.fieldinfo”
问题描述
在此先感谢大家....我正在使用 devexpress xtragridcontrol 根据行高显示数据。但问题是,不能将类型 system.reflection.fieldinfo 隐式转换为 devexpress.dataaccess.excel.fieldinfo,任何建议...
这是我的代码
private void UpdateGridSize()
{
GridViewInfo viewInfo = (GridViewInfo)gridView2.GetViewInfo();
DevExpress.DataAccess.Excel.FieldInfo fi = typeof(GridView).GetField("scrollInfo", BindingFlags.Instance | BindingFlags.NonPublic);
ScrollInfo scrollInfo = (ScrollInfo)fi.GetValue(gridView2);
int width = viewInfo.ViewRects.IndicatorWidth;
foreach (GridColumn column in gridView1.VisibleColumns)
{
if (viewInfo.GetColumnLeftCoord(column) < viewInfo.ViewRects.ColumnPanelWidth)
gridView1.LeftCoord = width;
width += viewInfo.ColumnsInfo[column].Bounds.Width;
}
if (scrollInfo.VScrollVisible) width += scrollInfo.VScrollSize;
int height = viewInfo.CalcRealViewHeight(new Rectangle(0, 0, ClientSize.Width, ClientSize.Height), true);
if (scrollInfo.HScrollVisible) height += scrollInfo.HScrollSize;
width = Math.Max(GridMinWidth, width);
width = Math.Min(ClientSize.Width - gridControl1.Location.X, width);
height = Math.Max(GridMinHeight, height);
height = Math.Min(ClientSize.Height - gridControl1.Location.Y, height);
gridControl1.Size = new Size(width, height);
gridView1.LayoutChanged();
}
解决方案
反射和 DevExpressFieldInfo
类型不相关,因此不兼容赋值。创建一个新对象并分配值
var fieldInfo = typeof(GridView).GetField("scrollInfo",
BindingFlags.Instance | BindingFlags.NonPublic); // Reflection
var fi = new DevExpress.DataAccess.Excel.FieldInfo {
Name = fieldInfo.Name, Type = fieldInfo.MemberType
};
或者你的意思是做这样的事情:
viewInfo.GetField(...)
代替
typeof(GridView).GetField(
根据 DevExpress的说法,该课程GridViewInfo
没有记录在案并且可能会发生变化
这个类没有文档化,因为它描述了内部可视化网格表示,可以根据开发需求动态改变。我们倾向于阻止我们的客户使用这个类。
推荐阅读
- python-3.x - Python If-Condition 与 While-True 无限循环冲突
- android - 如何使用 Android Webview 加载单屏 Web 应用程序?
- python - 使用 Dash plotly 删除响应功能
- c# - Automapper - 如何实现查找
- xml - XSLT:在重新排列 XML 时面临多个父节点的问题
- r - R通过grep搜索将数据附加到df列(每个模式=新列)
- publishing - 如何使用 Adobe Animate 制作 Android App Bundle 以将其发布到谷歌商店?
- r - R:一张图中日期对象的两个折线图
- r - 如何从文件名中获取最新日期
- c# - RazorPages 如何将 GET 参数传递给 OnGet?