动态设置dataGridView的列宽问题,急... 本帖最后由 hugofgh 于 2013-09-04 16:38:58 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Datagridview是动态加载的?不是就在设计的时候设计列宽 Datagridview的列也是动态的,在设置列宽之前执行了 dgvDataViewerOutCome.DataSource = hypothesisOutComeDTSource.Copy(); 加载数据前没有列,Datagridview的列也是动态的,在设置列宽之前执行了 dgvDataViewerOutCome.DataSource = hypothesisOutComeDTSource.Copy(); @ bdmh 斑竹:设置列宽还会引起其他事件吗?但是我用F11执行也没有进入其他事件。 直接设置 dataGridView1.AutoSizeColumnsMode 设置成Fill 就是因为有的列宽需要特定设置,所以才不能用Fill 是啊,一个Datagridview就2到3秒,累积起来就这么久了。其实第一次进来时很快,就是显示了的datagridview后面设置列宽就满了,不知道什么原因? AutoSizeColumnsMode = none;AutoSizeRowsMode = none;多个Grid时,只对当前显示的Grid设置列宽120000个数据开始Load 中的15:40:07.94215:40:07.957将所有的列宽修改后点击按钮15:41:06.27015:41:06.270private void Form1_Load(object sender, EventArgs e) { var dt = CreateDisTable(); for (int i = 1; i <= 10000; i++) { DataRow nr = dt.NewRow(); for (int j =0; j < 12; j++) { nr[j] = "Row" + i + "Col" + j; } dt.Rows.Add(nr); } dt.AcceptChanges(); dataGridView1.DataSource = dt; Console.WriteLine(DateTime.Now.ToString("HH:mm:ss.fff")); SetWidth(); Console.WriteLine(DateTime.Now.ToString("HH:mm:ss.fff")); } public void SetWidth() { dataGridView1.Columns[1].Width = 70; dataGridView1.Columns[2].Width = 130; dataGridView1.Columns[3].Width = 120; for (int j = 4; j < dataGridView1.Columns.Count; j++) { dataGridView1.Columns[j].Width = 120; } } public DataTable CreateDisTable() { DataTable tbl = new DataTable(); try { for (int i = 1; i <= 12; i++) { tbl.Columns.Add("col" + i, Type.GetType("System.String")); } } catch (Exception ex) { ex.Data.Add(ex.Data.Count, "Func:CreateDisTable"); throw ex; } return tbl; } private void button1_Click(object sender, EventArgs e) { Console.WriteLine(DateTime.Now.ToString("HH:mm:ss.fff")); SetWidth(); Console.WriteLine(DateTime.Now.ToString("HH:mm:ss.fff")); } 先设置AutoSizeRowsMode = none;很重要,我的就是因为是allcell所以很慢,修改后快多了。谢啦! 求大家帮我挑挑错 SQL Order By指定排序顺序? [图] WinForm下用C#怎样最简单地判断输入的是否是小数? C#中,[STAThread]代表什么意思? C#中做Flash播放器。报错:未能导入ActiveX控件。 C#程序里的“选项”怎么编程,就是退出时能保存设置,下次启动还能取得上次的设置 c#中,winform如何实现QQ登录验证效果 codejock command bars designer设计的菜单工具栏怎么不显示 c++转换为C# 数据操作问题! C# 调用 C++ DLL 问题 c# 中 lable.text怎么选择性的调用XML的内容???最好有示例,谢了!
Datagridview的列也是动态的,在设置列宽之前执行了
dgvDataViewerOutCome.DataSource = hypothesisOutComeDTSource.Copy();
加载数据前没有列,Datagridview的列也是动态的,在设置列宽之前执行了
dgvDataViewerOutCome.DataSource = hypothesisOutComeDTSource.Copy();
但是我用F11执行也没有进入其他事件。
就是因为有的列宽需要特定设置,所以才不能用Fill
是啊,一个Datagridview就2到3秒,累积起来就这么久了。
其实第一次进来时很快,就是显示了的datagridview后面设置列宽就满了,不知道什么原因?
AutoSizeRowsMode = none;多个Grid时,只对当前显示的Grid设置列宽
120000个数据开始Load 中的
15:40:07.942
15:40:07.957
将所有的列宽修改后点击按钮
15:41:06.270
15:41:06.270
private void Form1_Load(object sender, EventArgs e)
{
var dt = CreateDisTable(); for (int i = 1; i <= 10000; i++)
{
DataRow nr = dt.NewRow(); for (int j =0; j < 12; j++)
{
nr[j] = "Row" + i + "Col" + j;
}
dt.Rows.Add(nr);
}
dt.AcceptChanges();
dataGridView1.DataSource = dt;
Console.WriteLine(DateTime.Now.ToString("HH:mm:ss.fff"));
SetWidth();
Console.WriteLine(DateTime.Now.ToString("HH:mm:ss.fff"));
} public void SetWidth()
{
dataGridView1.Columns[1].Width = 70;
dataGridView1.Columns[2].Width = 130;
dataGridView1.Columns[3].Width = 120;
for (int j = 4; j < dataGridView1.Columns.Count; j++)
{
dataGridView1.Columns[j].Width = 120;
}
} public DataTable CreateDisTable()
{
DataTable tbl = new DataTable();
try
{
for (int i = 1; i <= 12; i++)
{
tbl.Columns.Add("col" + i, Type.GetType("System.String"));
}
}
catch (Exception ex)
{
ex.Data.Add(ex.Data.Count, "Func:CreateDisTable");
throw ex;
}
return tbl;
} private void button1_Click(object sender, EventArgs e)
{
Console.WriteLine(DateTime.Now.ToString("HH:mm:ss.fff"));
SetWidth();
Console.WriteLine(DateTime.Now.ToString("HH:mm:ss.fff"));
}
我的就是因为是allcell所以很慢,修改后快多了。
谢啦!