DataGridView控件的用法详解合集

来源:互联网 发布:日文毛笔字体下载 mac 编辑:程序博客网 时间:2024/05/17 02:46

1,当前选择的的单元格属性取得、变更

private void button3_Click(object sender, EventArgs e)

        { 

           

           //当前选择的的单元格属性取得、变更

            listBox1.Items.Add("当前选择的表格值(代码:dataGridView1.CurrentCell.Value)=" + dataGridView1.CurrentCell.Value);

            listBox1.Items.Add("当前选择的表格值(代码:dataGridView1.CurrentCell.ColumnIndex)=" + dataGridView1.CurrentCell.ColumnIndex);

            listBox1.Items.Add("当前选择的表格值(代码:dataGridView1.CurrentCell.RowIndex)=" + dataGridView1.CurrentCell.RowIndex);

            //设置[1,1]单元格为当前选择的单元格

            dataGridView1.CurrentCell = dataGridView1[1,1];

            listBox1.Items.Add("当前选择的表格值(代码:dataGridView1.CurrentCell.RowIndex)=" + dataGridView1.CurrentCell);

        }

运行时,需要先按DataGridViewOpar ,它会创建DataGridView数据视图实例,然后再按DataGridViewOparGather按钮。

2,DataGridView编辑属性

//全部单元格只读

            dataGridView1.ReadOnly = true;

            //指定行列单元格只读

            dataGridView1.Columns[1].ReadOnly = true;

            dataGridView1.Rows[2].ReadOnly = true;

    dataGridView1[0, 0].ReadOnly = true;

          //编辑指定单元格

private void dataGridView1_CellBeginEdit(object sender,

    DataGridViewCellCancelEventArgs e)

{

    string msg = String.Format("编辑表格 ({0}, {1})",

        e.ColumnIndex, e.RowIndex);

    this.Text = msg;

}

 

private void dataGridView1_CellEndEdit(object sender,

    DataGridViewCellEventArgs e)

{

    string msg = String.Format("完成编辑 ({0}, {1})",

        e.ColumnIndex, e.RowIndex);

    this.Text = msg;

}

3,DataGridView禁止用户追加新行

dataGridView1.AllowUserToAddRows = false;

4,判断当前选中行是否为新追加的行

if (dataGridView1.CurrentRow.IsNewRow = true)

            {

                MessageBox.Show("你选定的是新行");

            }

5,DataGridView设定删除行

//允许用户删除行操作

dataGridView1.AllowUserToDeleteRows = true;

//双击DataGridView属性框中事件列表中的以下两个事件,添加代码如下

//提示是否删除指定行数据

        private void dataGridView1_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)

        {

            DialogResult diaR = MessageBox.Show("是否删除该行?""确认"MessageBoxButtons.OKCancel,MessageBoxIcon.Question);

            if (diaR == DialogResult.OK)

            {

                e.Cancel = false;

            }

}

//提示删除了哪一行数据

        private void dataGridView1_UserDeletedRow(object sender, DataGridViewRowEventArgs e)

        {

            System.Text.StringBuilder messageBoxCS = new System.Text.StringBuilder();

            messageBoxCS.AppendFormat("{0} = {1}""行号为", e.Row);

            messageBoxCS.AppendLine();

            DialogResult diaR = MessageBox.Show("删除了" + messageBoxCS.ToString(), "确认");

           

        }

6,设置不显示指定行,设置删除选定的行或列

//显示指定行或列

dataGridView1.Columns[0].Visible = false;

            dataGridView1.Rows[0].Visible = false;

            dataGridView1.ColumnHeadersVisible = false;

            dataGridView1.RowHeadersVisible = false;

 

            //删除指定行

            dataGridView1.Columns.Remove("danwei");

            dataGridView1.Columns.RemoveAt(0);

            dataGridView1.Rows.RemoveAt(0);

//删除选定的多行

            foreach(  DataGridViewRow r in dataGridView1.SelectedRows)

            {

                if (r.IsNewRow == false)

                {

                    dataGridView1.Rows.Remove(r);

                }

     }

7,取得选定的行、列、单元格

//选定的单元格

            foreach (DataGridViewCell c in dataGridView1.SelectedCells)

            {

                string cr = string.Format("{0},{1}", c.ColumnIndex, c.RowIndex);

                listBox1.Items.Add("选定的单元格位置是:" + cr);

      }

//选定的行/

            foreach (DataGridViewRow c in dataGridView1.SelectedRows)

            {

                listBox1.Items.Add("选定的行是:" + c.RowIndex);

     }

foreach (DataGridViewColumn c in dataGridView1.SelectedColumns)

            {

                listBox1.Items.Add("选定的列是:" + c.ColumnIndex);

     }

         //指定选定单元格

            dataGridView1[0, 0].Selected = true;

         dataGridView1.Rows[0].Selected = true;

            dataGridView1.Columns[0].Selected = true;

 

//设置行首和左上角的文字

            dataGridView1.Rows[0].HeaderCell.Value = "第1行";

            dataGridView1.TopLeftHeaderCell.Value = "左上角";

8,手动追加列

//手动追加列

            dataGridView1.AutoGenerateColumns=false;

            dataGridView1.DataSource=ds;

            DataGridViewTextBoxColumn txtCol=new DataGridViewTextBoxColumn();

            txtCol.DataPropertyName="danwei";

            txtCol.Name="col1";

            txtCol.HeaderText="单位";

            dataGridView1.Columns.Add(txtCol);

9,单元格内输入值正确性判断

   在DataGridView控件的属性处,选择以下事件。

错误文本请求:

        private void dataGridView1_CellErrorTextNeeded(object sender, DataGridViewCellErrorTextNeededEventArgs e)

        {

            if ((dataGridView1.Columns[e.ColumnIndex].Name == "ID") && (dataGridView1.Columns["ID"].ToString()==""))

            {

                dataGridView1.Rows[e.RowIndex].ErrorText="值类型错误";

            }

        }

    输入值有效性检查:

        private void dataGridView1_CellValidated(object sender, DataGridViewCellEventArgs e)

        {

            dataGridView1.Rows[e.RowIndex].ErrorText="输入值无效"

        }

10,列中显示选择框控件CheckBox

//列中显示选择框CheckBox

            DataGridViewCheckBoxColumn column1= new DataGridViewCheckBoxColumn();

           {

                column1.HeaderText = "选择框";

                column1.Name = "checkbox";

                column1.AutoSizeMode =

                DataGridViewAutoSizeColumnMode.DisplayedCells;

                column1.FlatStyle = FlatStyle.Standard;

     //显示选择框的三种状态

                 column1.ThreeState = true;

            }

            dataGridView1.Columns.Add(column1);

11,插入新的一列到指定单元格列

//插入新的一列到指定单元格列

     dataGridView1.Columns.Insert(3, column1);

12,单元格添加下拉框

          //单元格添加下拉框

            DataGridViewComboBoxColumn dcombo = new DataGridViewComboBoxColumn();

            dcombo.Items.Add("中国");

            dcombo.Items.Add("美国");

            dcombo.Items.Add("德国");

            dcombo.Items.Add("日本");

            dcombo.Items.Add("英国");

            dcombo.Items.Add("法国");

            dcombo.Name = "combo";

            //显示的位置列

            // dcombo.DisplayIndex = 1;

            dcombo.HeaderText = "国家";

            //绑定数据库的值时使用以下属性

            //dcombo.DataPropertyName = "danwei";

            dataGridView1.Columns.Add(dcombo);

 

以上显示的下拉框,选择时需要点击三次,第一次选中单元格,第二次启用编辑,第三次打开下拉框。

如果需要一次点击打开下拉框,可以启用DataGridView的事件CellEnter();

代码如下:

private void dataGridView1_CellEnter(object sender, DataGridViewCellEventArgs e)

        {

            //实现单击显示列表框

           if (dataGridView1.Columns[e.ColumnIndex] is DataGridViewComboBoxColumn &&  e.RowIndex != -1)

            {

                SendKeys.Send("{F4}");

            }

        }

13,单元格显示按钮控件和显示超级链接

同上,只不过使用的类为:

DataGridViewButtonColumn dbotton;

相关代码:

//显示按钮控件

            DataGridViewButtonColumn col=new DataGridViewButtonColumn();

            col.Name="Button";

            col.UseColumnTextForButtonValue=true;

            col.Text = "按钮";

            dataGridView1.Columns.Add(col);

触发的事件为:

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)

        {

            if (dataGridView1.Columns[e.ColumnIndex].Name=="Button")

            {

                MessageBox.Show("触发了按钮");

            }

 }

 

 

 超级链接是:DataGridViewLinkColumn

连接代码同上。

单元格列显示图像的是:DataGridViewImageColumn

代码如下:

//显示图像

            DataGridViewImageColumn dgvI=new DataGridViewImageColumn();

            dgvI.Name="Image";

            dgvI.ValuesAreIcons=false;

            dgvI.Image = new Bitmap("c://windows//Blue Lace 16.bmp");

            dgvI.ImageLayout=DataGridViewImageCellLayout.Zoom;

            dgvI.Description="测试的图片";

            dataGridView1.Columns.Add(dgvI);

    dataGridView1["Image", 0].Value = new Bitmap("c://windows//Blue Lace 16.bmp");

 

 

等等,用法都是相同的。


转自:http://blog.csdn.net/lanhai96/article/details/5711928