【发布时间】:2013-05-12 13:09:05
【问题描述】:
我有一个 datagridview 表,我需要在其中显示一些数据。在某些情况下,我超出了列数限制并收到以下错误:
各列的 FillWeight 值之和不能超过 65535
还有其他工具可以用来克服这个限制吗?
【问题讨论】:
-
你需要多少列?
标签: c# winforms datagridview
我有一个 datagridview 表,我需要在其中显示一些数据。在某些情况下,我超出了列数限制并收到以下错误:
各列的 FillWeight 值之和不能超过 65535
还有其他工具可以用来克服这个限制吗?
【问题讨论】:
标签: c# winforms datagridview
打开一个网格事件columnAdded。
private void dataGridViewName_ColumnAdded(object sender, DataGridViewColumnEventArgs e)
{
e.Column.FillWeight = 10; // <<this line will help you
}
【讨论】:
DataGridView 中一列的默认填充权重为 100。这与网格的最大组合填充权重 65535 相结合意味着将 AutoGenerateColumns 设置为 true 时,数据源中的列数不能超过 655。
如果您需要比这更多的列,那么唯一的解决方案是将网格的 AutoGenerateColumns 设置为 false,然后手动添加具有不同填充权重的列(我不确定 0 是否是有效的填充权重,因此您可能需要使用 1)。
考虑不同的设计可能值得您考虑 - 在 DataGridView 中有这么多列不会很有用,DataGridView 的性能最多只能调整 100 列(我从this forum post 得到了这个数字由 DataGridView 程序管理器)
【讨论】:
column.FillWeight = 0 导致System.ArgumentOutOfRangeException: 'Value of '0' is not valid for 'FillWeight'. 'FillWeight' must be greater than 0. (Parameter 'value') Actual value was 0.'
如果它是 65,535,它是 16 位数字(因为 2^16=65,536)。这意味着您采用了Int16 变量。要增加此数据类型的限制,您应该使用Int32 或Int64 数据类型。
【讨论】: