1

我编写了一个类来显示一个包含datagridview. 该类连接到数据库,创建一个datatable并将其用作datagridview.

然后我datagridview使用Controls.Add().

当使用 显示表单时ShowDialog(),列就如预期的那样。

但是,如果我尝试在datagridview之前编辑列(宽度等)ShowDialog(),则会出现错误。如果我在调试中计算行数,它们是 0。但是,如果我进入ShowDialog()操作(绕过任何试图编辑列的内容),表单将显示所有列。

我想知道datagridview在它们出现给用户之前我需要在哪里编辑这些列。

对此的任何帮助将不胜感激。

4

2 回答 2

0

但是,如果我尝试在 ShowDialog 之前编辑 datagridview 列(宽度等),则会出现错误。(...) 知道了。我需要在表单加载事件中添加一个处理程序并将调整项放在那里。

我猜您尝试访问尚不存在的列。

您正在使用该DataGridView.AutoGenerateColumns功能,即使您设置了DataSource属性,在DatagridView显示网格之前也不会创建列。

这就是为什么当您在调用之前尝试访问列时它不起作用的原因ShowDialog(),它在form_Load事件或网格显示之后起作用。

这是一个常见问题:

Usingform_Load可能是一种可能的解决方法(不能保证每次都可以使用),但我建议您改用专为处理这种情况而设计DataGridView.DataBindingComplete的事件。

于 2013-09-11T15:35:56.730 回答
0

知道了。我需要在表单加载事件中添加一个处理程序并将调整项放在那里。

于 2013-09-11T15:16:27.190 回答