C# 向DataGridView标题添加索引
我正在开发一个VSPackage(VisualStudio2010的扩展),我有一个工具窗口,它承载一个DataGridView控件。 我有一个非常大的数据集(例如大小为16384 x 16384的2D数组),我通过VirtualMode更新数据C# 向DataGridView标题添加索引,c#,winforms,datagridview,C#,Winforms,Datagridview,我正在开发一个VSPackage(VisualStudio2010的扩展),我有一个工具窗口,它承载一个DataGridView控件。 我有一个非常大的数据集(例如大小为16384 x 16384的2D数组),我通过VirtualMode更新数据 grid.AutoResizeRowHeadersWidth( DataGridViewRowHeadersWidthSizeMode.AutoSizeToDisplayedHeaders); 我想给行标题单元格和列标题单元格添加索引, 所
grid.AutoResizeRowHeadersWidth(
DataGridViewRowHeadersWidthSizeMode.AutoSizeToDisplayedHeaders);
我想给行标题单元格和列标题单元格添加索引,
所以我试着:
grid.AutoResizeRowHeadersWidth(
DataGridViewRowHeadersWidthSizeMode.AutoSizeToDisplayedHeaders);
grid.AutoResizeRowHeadersWidth(
DataGridViewRowHeadersWidthSizeMode.AutoSizeToDisplayedHeaders);
grid.AutoResizeRowHeadersWidth(
DataGridViewRowHeadersWidthSizeMode.AutoSizeToDisplayedHeaders);
foreach (DataGridViewRow row in grid.Rows) {
row.HeaderCell.Value = (row.Index + 1).ToString();
}
grid.AutoResizeRowHeadersWidth(
DataGridViewRowHeadersWidthSizeMode.AutoSizeToDisplayedHeaders);
但是,所有这些方法都非常慢强>
grid.AutoResizeRowHeadersWidth(
DataGridViewRowHeadersWidthSizeMode.AutoSizeToDisplayedHeaders);
它们显著降低了DGV的渲染效果(在每种方法之后渲染视图大约需要5秒或更长时间,甚至更糟)
grid.AutoResizeRowHeadersWidth(
DataGridViewRowHeadersWidthSizeMode.AutoSizeToDisplayedHeaders);
您建议怎么做?我对这个问题做了初步研究,您列出了所有典型的解决方案,不幸的是,设置2.5亿个单元格值需要一些时间
grid.AutoResizeRowHeadersWidth(
DataGridViewRowHeadersWidthSizeMode.AutoSizeToDisplayedHeaders);
我唯一没有看到你提到的是伪造标题单元格(即第一列和灰色背景的行),并用源数据填充它们。由于DataGridView单元格值可以用像素值填充,一个想法是在加载的每个图像的左侧和顶部附加1个像素条
grid.AutoResizeRowHeadersWidth(
DataGridViewRowHeadersWidthSizeMode.AutoSizeToDisplayedHeaders);
我仍然认为解决方案需要更好的设计。下面是对你问题的间接回答
grid.AutoResizeRowHeadersWidth(
DataGridViewRowHeadersWidthSizeMode.AutoSizeToDisplayedHeaders);
制作带有放大功能的图片对话框。当用户/开发人员放大到像素级别时,向他们显示RGB值。这里是用基于MFC CLiDraw的C#编写的,它有一个示例向您展示如何放大
grid.AutoResizeRowHeadersWidth(
DataGridViewRowHeadersWidthSizeMode.AutoSizeToDisplayedHeaders);
另一个想法是一个滴管颜色选择器,您可以从以下位置获得:DataGridView,2D数组大小为16384 x 16384?谁能用这个?建议您更改设计。数据链接到图像/缓冲区,它显示每个[x,y]中像素的值,有时用户对图像中的特定区域感兴趣,当然图像作为一个整体毫无价值。感谢回复@Jeremy。这些都是有趣的链接,我会仔细看看,看看我是否能得到一些东西。关于“设置2.5亿单元格值”,我没有这样做,数据是按需填充的(CellValueRequired事件),索引是在滚动/数据更新时添加的。不幸的是,它仍然非常慢,我怀疑网格被重新绘制了太多次,仍然找不到瓶颈。
grid.AutoResizeRowHeadersWidth(
DataGridViewRowHeadersWidthSizeMode.AutoSizeToDisplayedHeaders);