【问题标题】:Datagridview column limitDatagridview 列限制
【发布时间】:2013-05-12 13:09:05
【问题描述】:

我有一个 datagridview 表,我需要在其中显示一些数据。在某些情况下,我超出了列数限制并收到以下错误:

各列的 FillWeight 值之和不能超过 65535

还有其他工具可以用来克服这个限制吗?

【问题讨论】:

  • 你需要多少列?

标签: c# winforms datagridview


【解决方案1】:

打开一个网格事件columnAdded

private void dataGridViewName_ColumnAdded(object sender, DataGridViewColumnEventArgs e)
{
    e.Column.FillWeight = 10;    // <<this line will help you
}

【讨论】:

  • 只想对这个答案表示非常感谢,它完全解决了我的问题,而且工作量很小。
【解决方案2】:

DataGridView 中一列的默认填充权重为 100。这与网格的最大组合填充权重 65535 相结合意味着将 AutoGenerateColumns 设置为 true 时,数据源中的列数不能超过 655。

如果您需要比这更多的列,那么唯一的解决方案是将网格的 AutoGenerateColumns 设置为 false,然后手动添加具有不同填充权重的列(我不确定 0 是否是有效的填充权重,因此您可能需要使用 1)。


考虑不同的设计可能值得您考虑 - 在 DataGridView 中有这么多列不会很有用,DataGridView 的性能最多只能调整 100 列(我从this forum post 得到了这个数字由 DataGridView 程序管理器)

【讨论】:

  • .NET6、VS2022、Windows.Forms: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.'
【解决方案3】:

如果它是 65,535,它是 16 位数字(因为 2^16=65,536)。这意味着您采用了Int16 变量。要增加此数据类型的限制,您应该使用Int32Int64 数据类型。

【讨论】:

  • 这纯属推测,并未解决问题的背景。你只是在猜测你认为有意义的事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多