看到一个示例,发现其datagridview控件显示信息的格式比较好看,显示的4列正好部满该控件(后面还有好几个列通过滚动条滚动显示)。但是在我的练习控件中怎么也实现不了这个效果,通过设置 this.dataGridView1.ColumnCount = 4; 提示“不能在数据绑定的 DataGridView 控件上设置 ColumnCount 属性 ”错误。我的数据源如下:            SqlStr = "select cardid as 编号,name as 姓名,post as 职务,company as 公司名称,mobile as 手机 from users";
            using (OleDbDataAdapter da = new OleDbDataAdapter(SqlStr, Olecon))
            {
                DataTable dt = new DataTable();
                da.Fill(dt);
                DataView dv = new DataView(dt);
                this.dataGridView1.DataSource = dt.DefaultView;......找了很久也没有解决的办法,于是迫不得己采取下面这个笨办法:            int wh = this.dataGridView1.RowHeadersWidth;
            int w0 = this.dataGridView1.Columns[0].Width;
            this.dataGridView1.Columns[1].Width = 60;
            int w1 = this.dataGridView1.Columns[1].Width;
            this.dataGridView1.Columns[2].Width = 120;
            int w2 = this.dataGridView1.Columns[2].Width;
            this.dataGridView1.Columns[3].MinimumWidth = 130;
            this.dataGridView1.Columns[3].Width = this.dataGridView1.Width-wh-w0-w1-w2;唉,实在很无奈,不知道可有高手给出一个简洁的解决办法啊。本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/china1976/archive/2009/10/23/4721210.aspx

解决方案 »

  1.   

    试试,下面的效果private void button2_Click(object sender, EventArgs e)
    {
        dataGridView1.Columns[2].Frozen = true; //锁定前3列,后面的列滚动显示
    }
      

  2.   

    不行,我这个datagridview已经是前两个列设置为冻结的了。
      

  3.   

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;namespace WindowsFormsApplication78
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();            DataGridView DGV = new DataGridView();
                DGV.Parent =this;
                
                DataGridViewTextBoxColumn Column=new DataGridViewTextBoxColumn ();
                Column.HeaderText ="1";
                Column.AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells ;
                DGV.Columns.Add(Column);            Column = new DataGridViewTextBoxColumn();
                Column.HeaderText = "2";
                Column.AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
                DGV.Columns.Add(Column);            Column = new DataGridViewTextBoxColumn();
                Column.HeaderText = "3";
                Column.AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
                DGV.Columns.Add(Column);            Column = new DataGridViewTextBoxColumn();
                Column.HeaderText = "4";
                DGV.Columns.Add(Column);            Column = new DataGridViewTextBoxColumn();
                Column.HeaderText = "5";
                DGV.Columns.Add(Column);            Column = new DataGridViewTextBoxColumn();
                Column.HeaderText = "6";
                DGV.Columns.Add(Column);            DGV.Rows.Add(3);
            }
        }
    }
      

  4.   

     DataGridView DGV = new DataGridView();
                DGV.Parent =this;
                
                DataGridViewTextBoxColumn Column=new DataGridViewTextBoxColumn ();
                Column.HeaderText ="1";
                Column.AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells ;
                Column.Frozen = true;
                DGV.Columns.Add(Column);            Column = new DataGridViewTextBoxColumn();
                Column.HeaderText = "2";
                Column.AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
                Column.Frozen = true;
                DGV.Columns.Add(Column);            Column = new DataGridViewTextBoxColumn();
                Column.HeaderText = "3";
                Column.AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
                Column.Frozen = true;
                DGV.Columns.Add(Column);            Column = new DataGridViewTextBoxColumn();
                Column.HeaderText = "4";
                Column.Frozen = true;
                DGV.Columns.Add(Column);            Column = new DataGridViewTextBoxColumn();
                Column.HeaderText = "5";
                DGV.Columns.Add(Column);            Column = new DataGridViewTextBoxColumn();
                Column.HeaderText = "6";
                DGV.Columns.Add(Column);
    至于正好部满该控件,DataGridView有个AutoSizeColumnsMode属性设置为Fill[注意:它的值是个枚举,vs会自动提示的】
      

  5.   

    在我的实例上用7楼还是不行,大家如果有时间可以动手做一个简单的表试试即可,我用的access