当前位置: 代码迷 >> C# >> 大家伙儿帮忙看看这是为什么
  详细解决方案

大家伙儿帮忙看看这是为什么

热度:44   发布时间:2016-05-05 04:27:44.0
大家帮忙看看这是为什么
小弟新手做了一个小界面,目的是用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,提供客户自动调整列宽的功能