c#中的DataGridView.AutoResizeColumns()何时起作用?

csoapy 2009-12-24 06:26:12
我用的是vs2008+sp1,c#,windows应用程序,在主窗体(FormMain)上放了个TabControl,tab中放了个DataGridView,都是拖上去的。

然后,我在FormMain的构造函数中这样:

public FormMain()
{
InitializeComponent();
InitializeDatabase(); //连接数据库,向DataGridViewer中填充数据

this.Resize += new EventHandler(FormMain_Resize);
this.Move += new EventHandler(FormMain_Move);
this.Activated += new EventHandler(FormMain_Activated);

myDataGridView.AutoResizeColumns();
}

除了FormMain()中调用myDataGridView.AutoResizeColumns()还在上述三个事件的响应函数中调用了它。
然后,奇怪的事情就出现了:
窗口第一次显示后列很宽,只有最大(小)化、改变窗体大小后列宽才正常显示。
我又在窗体上放了一个按钮btnTest,在btnTest_Click()里面调用myDataGridView.AutoResizeColumns()就列宽就能正常显示!

怪就怪在:为何主窗体第一次显示后列宽显示不正常呢?为什么最大(小)化一次就可以了呢?我也下断点跟踪了,在窗体显示之前,myDataGridView.AutoResizeColumns();确实被调用过了,而且我的数据获取、显示、调整列宽这样顺序并没有错啊?

哪位达人知道这是为什么?如何修改?
...全文
541 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuyq11 2009-12-24
  • 打赏
  • 举报
回复
DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
DataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
DataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);

在绑定数据时设置
csoapy 2009-12-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lindenrty 的回复:]
Form.refresh()函数
[/Quote]

也不行,我把每个myDataGridView.AutoResizeColumns();替换成以下句也还不行
this.Refresh()
myDataGridView.AutoResizeColumns();
myDataGridView.Refresh();
this.Refresh();
lindenrty 2009-12-24
  • 打赏
  • 举报
回复
Form.refresh()函数
lindenrty 2009-12-24
  • 打赏
  • 举报
回复
这句代码后面 直接刷新一下画面看看呢?
csoapy 2009-12-24
  • 打赏
  • 举报
回复
写错了一句,应该是“我的数据获取、调整列宽、显示这样顺序并没有错啊? ”

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧