C#控件之DataGridView

第一种:
DataSet ds=new DataSet ();
this.dataGridView1.DataSource=ds.Table[0];

第二种:
DataTable dt=new DataTable();
this.dataGridView1.DataSource=dt;

第三种:
DataSet ds=new DataSet ();
this.dataGridView1.DataSource = ds.Tables["表名"];

第四种:
DataSet ds=new DataSet ();
this.dataGridView1.DataSource = ds;
this.dataGridView1.DataMember = "表名";

第五种:
ArrayList Al = new ArrayList();
this.dataGridView1.DataSource = Al;

第六种:
Dictionary<string, string> dic = new Dictionary<string, string>();
this.dataGridView1.DataSource = dic;

第七种:
DataView dv = new DataView();
this.dataGridView1.DataSource = dv;

第八种:
this.dataGridVi.DataSource = new BindingList<Object>(List<Object>);


非绑定模式 (ref:http://blog.csdn.net/yudandan10/article/details/9618763)

所谓的非绑定模式就是dataGridView控件显示的数据不是来自于绑定的数据源,而是可以通过代码手动将数据填充到DataGridView控件中,这样就为DataGridView控件增加了很大的灵活性

在此我们先来了解一下DataGridView控件有多种类型的列 ,而这些类型都是间接的或直接的继承了DataGridViewColumns()    ,下面是我们能够长用的几种类型

说明

DataGridViewTextBoxColumn

与基于文本的值一起使用,在绑定到数字和字符串类型的值时自动生成

DataGridViewCheckBoxColumn

booleancheckState值一起使用,在绑定到这些类型的值时自动生成

DataGridViewImageColumn

用于显示图像,在绑定到字节数组、Image对象或Icon对象自动生成

DataGridViewButtonColumn

用于在单元格中显示按钮,不会在绑定时自动生成,通常用来做未绑定列

DataGridViewComboBoxColumn

用户在单元格中显示下拉列表,不会在绑定时自动生成,通常收到进行数据绑定

DataGridViewLinkColumn

用于在单元格中显示超链接,不会在绑定时自动生成,通常需要进行手动绑定数据

 

 

代码添加数据

dataGridView1.Columns.Add("head1", "head1");
dataGridView1.Columns.Add("head2", "head2");
dataGridView1.Columns.Add("head3", "head3");

dataGridView1.Rows.Add(new[] { "1", "2", "3" });
dataGridView1.Rows.Add(new[] { "1", "2", "3" });
dataGridView1.Rows.Add(new[] { "1", "2", "3" });

//不显示第一列
dataGridView1.RowHeadersVisible = false;


 

 

//隐藏第一列
dataGridView1.RowHeadersVisible = false;

//固定行高
dataGridView1.AllowUserToResizeRows = false; 

//禁止新增行
dataGridView1.AllowUserToAddRows = false; 

//修改某一行背景色
dataGridView1.Rows[i].DefaultCellStyle.BackColor = Color.DarkGray; 

//列标题居中
dataGridView1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;

//某一列居中
dataGridView1.Columns[0].DefaultCellStyle .Alignment = DataGridViewContentAlignment.MiddleCenter;
dataGridView1.Columns[1].DefaultCellStyle .Alignment = DataGridViewContentAlignment.MiddleCenter;

 

DataGridView中的Cell无法触发KeyPress事件,解决方法

DataGridView在Cell编辑状态响应回车键下的KeyPress/KeyDown/KeyUp事件

 

private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
           
    if (e.Control is DataGridViewTextBoxEditingControl)
    {
        var dgv = (DataGridView)sender;

        var tb = (DataGridViewTextBoxEditingControl)e.Control;

        //解除事件
        tb.KeyPress -= dataGridView1_KeyPress;

        //需要添加事件的列
        if (dgv.CurrentCell.ColumnIndex == 3 )
        {
            //事件追加
            tb.KeyPress += dataGridView1_KeyPress;                   
        }
    }
}


private void dataGridView1_KeyPress(object sender, KeyPressEventArgs e)
{
    if (e.KeyChar < '0' || e.KeyChar > '9')
    {
        if (e.KeyChar != (char)((int)Keys.Back) && e.KeyChar != (char)((int)Keys.Escape))
        {
            e.Handled = true;
        }
    }
}

 

 

参考:

1 【转】DataGridView绑定数据源的几种方式

posted @ 2019-03-26 16:47  quanzhan  阅读(2644)  评论(0编辑  收藏  举报