小弟新手做了一个小界面,目的是用datatable绑定datagridview显示数据,其中引用了一段自动调整列宽的代码,每次运行时,第一次点击确定按钮一切正常,但第二次点击确定时表头就会的字就会串行
代码如下
SqlConnection conn = new SqlConnection("server = .;database = matchcoil0822;uid = sa;pwd =sa");//链接数据库
conn.Open();
SqlDataAdapter dtadapter = new SqlDataAdapter("select ****省略了 太长了, conn);
DataTable dt = new DataTable();
dtadapter.Fill(dt);
string[] columnsName = { "材料号", "材料重量", "MAT_ACT_THICK", "MAT_ACT_WIDTH", "出钢记号", "厂别", "前机组代码", "BACKLOG号", "合同号", "主机组", "原合同号", "状态修改时间", "确认计划号", "确认责任者", "申报决定时间", "APP_DECIDE_NO", "APP_DECIDE_MAKER", "合同性质代码", "天数" };
for (int i = 0; i < 19; i++)//修改表头
{
dt.Columns[i].ColumnName = columnsName[i];
}
dataGridView1.DataSource = dt.DefaultView;//数据填充到dataGridView
for (int i = 0; i < dataGridView1.ColumnCount; i++)//自动调节列宽
{
DataGridViewColumn column = dataGridView1.Columns[i];
column.AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
}
this.dataGridView1.RowHeadersVisible = true;
this.dataGridView1.AllowUserToAddRows = false;
第一次点击按钮后

在点击一下就会变成这样,表头的字成了2行了,而且串行的都是汉字表头,英文表头没事

这是为什么啊
------解决思路----------------------
自动调整列宽,是根据单元格内容的长度决定的。
------解决思路----------------------
应该是数据不同而引起的宽度不一致,别设置自动列宽
------解决思路----------------------
开发时预先设置列宽是比较烦的
第一、各个单元格字符数随着检索条件的改变,长短不一,难以固定设置一次凑效
第二、用户的屏幕分辨率不一
。。。
可以这样实现
1、根据数据源(比如DataTable)个列最长字符串,代码动态调整列宽
2、借助ContextMenuStrip,提供客户自动调整列宽的功能