- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Text;
- using System.Windows.Forms;
- using System.Data.OracleClient;
- using System.IO;
- using System.Data.OleDb;
- namespace TestMouseMove
- {
- public partial class Form3 : Form
- {
- public Form3()
- {
- InitializeComponent();
- dgvLoad();
- }
- public void dgvLoad()
- {
- this.DataGridView1.Columns[0].HeaderCell.Value = "姓名";
- this.DataGridView1.Columns[1].HeaderCell.Value = "字段2";
- this.DataGridView1.Columns[2].HeaderCell.Value = "字段3";
- this.DataGridView1.Columns[3].HeaderCell.Value = "字段4";
- this.DataGridView1.Columns[4].HeaderCell.Value = "字段5";
- this.DataGridView1.Rows.Add("黑色头发", "1行2列", "1行3列", "1行4列", "1行5列");
- this.DataGridView1.Rows.Add("紫色头发", "2行2列aaaa", "2行3列", "2行4列", "2行5列");
- this.DataGridView1.Rows.Add("蓝色头发", "3行2列", "3行3列", "3行4列", "3行5列");
- this.DataGridView1.Rows.Add("红色头发", "4行2列", "4行3列", "4行4列", "4行5列");
- this.DataGridView1.Rows.Add("棕色头发", "5行2列", "5行3列", "5行4列", "5行5列");
- DataGridView1.ShowCellErrors = true;
- //设定 (0, 0) 的单元格表示 Error图标
- DataGridView1[3, 3].ErrorText = "这是单元格提示错误信息,也可以再行头显示这个错误提示信息";
- //设定第4行(Index=3)的行头显示Error图标
- //DataGridView1.Rows[0].ErrorText = "不能输入负值。";
- }
- private void button1_Click(object sender, EventArgs e)
- {
- // 设定 (1, 2) 为当前单元格
- DataGridView1.CurrentCell = DataGridView1[1, 2];
- }
- private void button2_Click(object sender, EventArgs e)
- {
- // 取得当前单元格内容
- MessageBox.Show(DataGridView1.CurrentCell.Value.ToString());
- // 取得当前单元格的列 Index
- MessageBox.Show(DataGridView1.CurrentCell.ColumnIndex.ToString());
- // 取得当前单元格的行 Index
- MessageBox.Show(DataGridView1.CurrentCell.RowIndex.ToString());
- }
- /// <summary>
- /// 向下遍历
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void button3_Click(object sender, EventArgs e)
- {
- int row = this.DataGridView1.CurrentRow.Index + 1;
- if (row > this.DataGridView1.RowCount - 1)
- row = 0;
- this.DataGridView1.CurrentCell = this.DataGridView1[0, row];
- }
- /// <summary>
- /// 向上遍历
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void button4_Click(object sender, EventArgs e)
- {
- int row = this.DataGridView1.CurrentRow.Index - 1;
- if (row < 0)
- row = this.DataGridView1.RowCount - 1;
- this.DataGridView1.CurrentCell = this.DataGridView1[0, row];
- }
- private void button5_Click(object sender, EventArgs e)
- {
- if (DataGridView1.ReadOnly)
- {
- // 取消 DataGridView1 为只读
- DataGridView1.ReadOnly = false;
- DataGridView1.DefaultCellStyle.BackColor = Color.White;
- }
- else
- {
- // 设置 DataGridView1 为只读
- DataGridView1.ReadOnly = true;
- DataGridView1.DefaultCellStyle.BackColor = Color.Gainsboro;
- }
- }
- private void button6_Click(object sender, EventArgs e)
- {
- if (DataGridView1.Columns[1].ReadOnly)
- {
- // 设置 DataGridView1 的第2列整列单元格为只读并变色
- DataGridView1.Columns[1].ReadOnly = false;
- DataGridView1.Columns[1].DefaultCellStyle.BackColor = Color.White;
- // 设置 DataGridView1 的第3行整行单元格为只读并变色
- DataGridView1.Rows[2].ReadOnly = false;
- DataGridView1.Rows[2].DefaultCellStyle.BackColor = Color.White;
- // 设置 DataGridView1 的[0,0]单元格为只读并变色
- DataGridView1[0, 0].ReadOnly = false;
- DataGridView1.Rows[0].Cells[0].Style.BackColor = Color.White;
- }
- else
- {
- // 设置 DataGridView1 的第2列整列单元格为只读并变色
- DataGridView1.Columns[1].ReadOnly = true;
- DataGridView1.Columns[1].DefaultCellStyle.BackColor = Color.Gainsboro;
- // 设置 DataGridView1 的第3行整行单元格为只读并变色
- DataGridView1.Rows[2].ReadOnly = true;
- DataGridView1.Rows[2].DefaultCellStyle.BackColor = Color.Gainsboro;
- // 设置 DataGridView1 的[0,0]单元格为只读并变色
- DataGridView1[0, 0].ReadOnly = true;
- DataGridView1.Rows[0].Cells[0].Style.BackColor = Color.Gainsboro;
- }
- }
- private void button7_Click(object sender, EventArgs e)
- {
- if (DataGridView1.EditMode.Equals(DataGridViewEditMode.EditOnEnter))
- {
- DataGridView1.EditMode = DataGridViewEditMode.EditProgrammatically;
- DataGridView1.DefaultCellStyle.BackColor = Color.Red;
- }
- else
- {
- DataGridView1.EditMode = DataGridViewEditMode.EditOnEnter;
- DataGridView1.DefaultCellStyle.BackColor = Color.White;
- }
- }
- private void button8_Click(object sender, EventArgs e)
- {
- DataGridView1.Rows[DataGridView1.CurrentCell.RowIndex].Cells[DataGridView1.CurrentCell.ColumnIndex].Style.BackColor = Color.White;
- DataGridView1.BeginEdit(true);
- }
- private void button9_Click(object sender, EventArgs e)
- {
- if (DataGridView1.AllowUserToAddRows)
- {
- // 设置用户不能手动给 DataGridView1 添加新行
- DataGridView1.AllowUserToAddRows = false;
- }
- else
- {
- // 设置用户可以手动给 DataGridView1 添加新行
- DataGridView1.AllowUserToAddRows = true;
- }
- }
- private void button10_Click(object sender, EventArgs e)
- {
- if (DataGridView1.AllowUserToDeleteRows)
- {
- // 禁止DataGridView1的行删除操作。
- DataGridView1.AllowUserToDeleteRows = false;
- DataGridView1.DefaultCellStyle.BackColor = Color.Wheat;
- }
- else
- {
- // 允许DataGridView1的行删除操作。
- DataGridView1.AllowUserToDeleteRows = true;
- DataGridView1.DefaultCellStyle.BackColor = Color.White;
- }
- }
- private void button11_Click(object sender, EventArgs e)
- {
- if (DataGridView1.Columns[0].Visible)
- {
- // DataGridView1的第一列隐藏
- DataGridView1.Columns[0].Visible = false;
- // DataGridView1的第一行隐藏
- DataGridView1.Rows[0].Visible = false;
- }
- else
- {
- // DataGridView1的第一列显示
- DataGridView1.Columns[0].Visible = true;
- // DataGridView1的第一行显示
- DataGridView1.Rows[0].Visible = true;
- }
- }
- private void button12_Click(object sender, EventArgs e)
- {
- if (DataGridView1.ColumnHeadersVisible)
- {
- // 列头隐藏
- DataGridView1.ColumnHeadersVisible = false;
- // 行头隐藏
- DataGridView1.RowHeadersVisible = false;
- }
- else
- {
- // 列头显示
- DataGridView1.ColumnHeadersVisible = true;
- // 行头显示
- DataGridView1.RowHeadersVisible = true;
- }
- }
- private void button13_Click(object sender, EventArgs e)
- {
- // 删除名为"Column1"的列
- DataGridView1.Columns.Remove("Column1");
- // 删除第四列
- DataGridView1.Columns.RemoveAt(2);
- // 删除第三行
- DataGridView1.Rows.RemoveAt(2);
- }
- private void button14_Click(object sender, EventArgs e)
- {
- foreach (DataGridViewRow r in DataGridView1.SelectedRows)
- {
- if (!r.IsNewRow)
- {
- DataGridView1.Rows.Remove(r);
- }
- }
- }
- private void button15_Click(object sender, EventArgs e)
- {
- if (DataGridView1.AllowUserToResizeColumns)
- {
- // 禁止用户改变DataGridView1的所有列的列宽
- DataGridView1.AllowUserToResizeColumns = false;
- //禁止用户改变DataGridView1的所有行的行高
- DataGridView1.AllowUserToResizeRows = false;
- }
- else
- {
- // 允许用户改变DataGridView1的所有列的列宽
- DataGridView1.AllowUserToResizeColumns = true;
- // 允许用户改变DataGridView1的所有行的行高
- DataGridView1.AllowUserToResizeRows = true;
- }
- }
- private void button16_Click(object sender, EventArgs e)
- {
- // 禁止用户改变DataGridView1的第一列的列宽
- DataGridView1.Columns[0].Resizable = DataGridViewTriState.False;
- // 禁止用户改变DataGridView1的第一列的行宽
- DataGridView1.Rows[0].Resizable = DataGridViewTriState.False;
- }
- private void button17_Click(object sender, EventArgs e)
- {
- // 第一列的最小列宽设定为 100
- DataGridView1.Columns[0].MinimumWidth = 200;
- // 第一行的最小行高设定为 50
- DataGridView1.Rows[0].MinimumHeight = 50;
- }
- private void button18_Click(object sender, EventArgs e)
- {
- // 禁止用户改变列头的高度
- DataGridView1.ColumnHeadersHeightSizeMode =
- DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
- // 禁止用户改变行头的宽度
- DataGridView1.RowHeadersWidthSizeMode =
- DataGridViewRowHeadersWidthSizeMode.DisableResizing;
- }
- private void button19_Click(object sender, EventArgs e)
- {
- // 设定包括Header和所有单元格的列宽自动调整
- DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
- // 设定包括Header和所有单元格的行高自动调整
- DataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
- }
- private void button20_Click(object sender, EventArgs e)
- {
- // 第一列自动调整
- DataGridView1.Columns[0].AutoSizeMode =
- DataGridViewAutoSizeColumnMode.DisplayedCells;
- }
- private void button21_Click(object sender, EventArgs e)
- {
- // 设定列头的宽度可以自动调整
- DataGridView1.ColumnHeadersHeightSizeMode =
- DataGridViewColumnHeadersHeightSizeMode.AutoSize;
- // 设定行头的宽度可以自动调整
- DataGridView1.RowHeadersWidthSizeMode =
- DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders;
- }
- private void button22_Click(object sender, EventArgs e)
- {
- // 让 DataGridView1 的所有列宽自动调整一下。
- DataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);
- }
- private void button23_Click(object sender, EventArgs e)
- {
- // 让 DataGridView1 的第三列的列宽自动调整一下。
- DataGridView1.AutoResizeColumn(2, DataGridViewAutoSizeColumnMode.AllCells);
- }
- private void button24_Click(object sender, EventArgs e)
- {
- // 让 DataGridView1 的所有行高自动调整一下。
- DataGridView1.AutoResizeRows(DataGridViewAutoSizeRowsMode.AllCells);
- //让 DataGridView1 的第一行的行高自动调整一下。
- DataGridView1.AutoResizeRow(0, DataGridViewAutoSizeRowMode.AllCells);
- }
- private void button25_Click(object sender, EventArgs e)
- {
- // 列头高度自动调整
- DataGridView1.AutoResizeColumnHeadersHeight();
- // 行头宽度自动调整
- DataGridView1.AutoResizeRowHeadersWidth(
- DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders);
- }
- private void button26_Click(object sender, EventArgs e)
- {
- // DataGridView1的左侧2列固定
- DataGridView1.Columns[1].Frozen = true;
- DataGridView1.Columns[2].Width = 800;
- }
- private void button27_Click(object sender, EventArgs e)
- {
- // DataGridView1 的上3行固定
- DataGridView1.Rows[2].Frozen = true;
- DataGridView1.Rows[3].Height = 500;
- }
- private void button28_Click(object sender, EventArgs e)
- {
- DataGridView1.AllowUserToOrderColumns = true;
- }
- private void button29_Click(object sender, EventArgs e)
- {
- // 改变DataGridView1的第一列列头内容
- DataGridView1.Columns[0].HeaderCell.Value = "第一列";
- // 改变DataGridView1的第一行行头内容
- DataGridView1.Rows[0].HeaderCell.Value = "第一行";
- // 改变DataGridView1的左上头部单元内容
- DataGridView1.TopLeftHeaderCell.Value = "左上";
- // 改变DataGridView1的第二列列头内容
- DataGridView1.Columns[1].HeaderText = "第二列";
- }
- private void button30_Click(object sender, EventArgs e)
- {
- Clipboard.SetDataObject(DataGridView1.GetClipboardContent());
- }
- private void button31_Click(object sender, EventArgs e)
- {
- //当前单元格是否选择的判断
- if (DataGridView1.CurrentCell == null)
- {
- return;
- }
- int insertRowIndex = DataGridView1.CurrentCell.RowIndex;
- int insertColumnsIndex = DataGridView1.CurrentCell.ColumnIndex;
- // 获取剪切板的内容,并按行分割
- string pasteText = Clipboard.GetText();
- if (string.IsNullOrEmpty(pasteText))
- {
- return;
- }
- pasteText = pasteText.Replace(" ", " ");
- pasteText = pasteText.Replace(' ', ' ');
- pasteText.TrimEnd(new char[] { ' ' });
- string[] lines = pasteText.Split(' ');
- bool isHeader = false;
- foreach (string line in lines)
- {
- // 是否是列头
- if (isHeader)
- {
- isHeader = false;
- continue;
- }
- // 按 Tab 分割数据
- string[] vals = line.Split(' ');
- DataGridViewRow row = DataGridView1.Rows[insertRowIndex];
- // 行头设定
- //row.HeaderCell.Value = vals[0];
- // 单元格内容设定
- for (int i = 0; i < vals.Length; i++)
- {
- row.Cells[insertColumnsIndex].Value = vals[i];
- }
- // DataGridView的行索引+1
- insertRowIndex++;
- }
- }
- private void button32_Click(object sender, EventArgs e)
- {
- // 设定单元格的ToolTip内容
- DataGridView1[0, 0].ToolTipText = "该单元格的内容不能修改";
- // 设定列头的单元格的ToolTip内容
- DataGridView1.Columns[0].ToolTipText = "该列只能输入数字";
- // 设定行头的单元格的ToolTip内容
- DataGridView1.Rows[0].HeaderCell.ToolTipText = "该行单元格内容不能修改";
- DataGridView1.VirtualMode = false;
- DataGridView1.ShowCellToolTips = true;
- }
- private void DataGridView1_CellToolTipTextNeeded(object sender, DataGridViewCellToolTipTextNeededEventArgs e)
- {
- MessageBox.Show(e.ToolTipText = e.ColumnIndex.ToString() + ", " + e.RowIndex.ToString());
- }
- private void button33_Click(object sender, EventArgs e)
- {
- // DataGridView 的 ContextMenuStrip 设定
- DataGridView1.ContextMenuStrip = this.ContextMenuStrip1;
- // 列的 ContextMenuStrip 设定
- DataGridView1.Columns[0].ContextMenuStrip = this.ContextMenuStrip2;
- // 列头的 ContextMenuStrip 设定
- DataGridView1.Columns[0].HeaderCell.ContextMenuStrip = this.ContextMenuStrip2;
- // 行的 ContextMenuStrip 设定
- DataGridView1.Rows[0].ContextMenuStrip = this.ContextMenuStrip3;
- // 单元格的 ContextMenuStrip 设定
- DataGridView1[0, 0].ContextMenuStrip = this.ContextMenuStrip4;
- }
- private void DataGridView1_CellContextMenuStripNeeded(object sender, DataGridViewCellContextMenuStripNeededEventArgs e)
- {
- DataGridView dgv = (DataGridView)sender;
- if (e.RowIndex < 0)
- {
- // 列头的ContextMenuStrip设定
- e.ContextMenuStrip = this.ContextMenuStrip1;
- }
- else if (e.ColumnIndex < 0)
- {
- // 行头的ContextMenuStrip设定
- e.ContextMenuStrip = this.ContextMenuStrip2;
- }
- else if (dgv[e.ColumnIndex, e.RowIndex].Value is int)
- {
- // 如果单元格值是整数时
- e.ContextMenuStrip = this.ContextMenuStrip3;
- }
- }
- private void DataGridView1_RowContextMenuStripNeeded(object sender, DataGridViewRowContextMenuStripNeededEventArgs e)
- {
- DataGridView dgv = (DataGridView)sender;
- // 当"Column1"列是Bool型且为True时、设定其的ContextMenuStrip
- object boolVal = dgv["Column1", e.RowIndex].Value;
- Console.WriteLine(boolVal);
- if (boolVal is bool && (bool)boolVal)
- {
- e.ContextMenuStrip = this.ContextMenuStrip1;
- }
- }
- private void button34_Click(object sender, EventArgs e)
- {
- DataGridView1.BorderStyle = BorderStyle.None;
- }
- private void button35_Click(object sender, EventArgs e)
- {
- DataGridView1.CellBorderStyle = DataGridViewCellBorderStyle.SunkenVertical;
- }
- private void button36_Click(object sender, EventArgs e)
- {
- DataGridView1.ColumnHeadersBorderStyle = DataGridViewHeaderBorderStyle.Sunken;
- }
- private void button37_Click(object sender, EventArgs e)
- {
- DataGridView1.RowHeadersBorderStyle = DataGridViewHeaderBorderStyle.Single;
- }
- private void button38_Click(object sender, EventArgs e)
- {
- DataGridView1.GridColor = Color.Red;
- }
- private void button40_Click(object sender, EventArgs e)
- {
- //foreach (Control c in this.Controls)
- //{
- // c.Dispose(); //如果有Panel等窗口的话,还得将子控件给 Dispose掉
- //}
- DataGridView1.Dispose();
- InitializeComponent();
- dgvLoad();
- }
- private void DataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
- {
- DataGridView dgv = (DataGridView)sender;
- // 如果单元格是“Column1”列的单元格
- if (e.ColumnIndex < 0)
- {
- return;
- }
- if (dgv.Columns[e.ColumnIndex].Name == "Column1" && e.Value is string)
- {
- // 将单元格值改为大写
- string str = e.Value.ToString();
- e.Value = str.ToUpper();
- // 应用该Format,Format完毕。
- e.FormattingApplied = true;
- }
- }
- private void DataGridView1_CellParsing(object sender, DataGridViewCellParsingEventArgs e)
- {
- DataGridView dgv = (DataGridView)sender;
- //单元格列为“Column2”时
- if (dgv.Columns[e.ColumnIndex].Name == "Column2" && e.Value is string)
- {
- //将单元格值设为大写
- e.Value = e.Value.ToString().ToUpper();
- //解析完毕
- e.ParsingApplied = true;
- }
- }
- private void DataGridView1_DefaultValuesNeeded(object sender, DataGridViewRowEventArgs e)
- {
- // 设定单元格的默认值
- e.Row.Cells["Column1"].Value = "我";
- e.Row.Cells["Column2"].Value = "是";
- e.Row.Cells["Column3"].Value = "默";
- e.Row.Cells["Column4"].Value = "认";
- e.Row.Cells["Column5"].Value = "值";
- }
- private void DataGridView1_CellErrorTextNeeded(object sender, DataGridViewCellErrorTextNeededEventArgs e)
- {
- DataGridView dgv = (DataGridView)sender;
- // 单元格值为负整数时,Error图标被表示。
- object cellVal = dgv[e.ColumnIndex, e.RowIndex].Value;
- if (cellVal is int && ((int)cellVal) < 0)
- {
- e.ErrorText = "不能输入负整数。";
- }
- }
- private void DataGridView1_RowErrorTextNeeded(object sender, DataGridViewRowErrorTextNeededEventArgs e)
- {
- DataGridView dgv = (DataGridView)sender;
- if (dgv["Column1", e.RowIndex].Value == DBNull.Value &&
- dgv["Column2", e.RowIndex].Value == DBNull.Value)
- {
- e.ErrorText =
- "Column1和Column2必须输入一个值。";
- }
- }
- private void DataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
- {
- DataGridView dgv = (DataGridView)sender;
- if (dgv.Columns[e.ColumnIndex].Name == "Column4" && e.FormattedValue.ToString() == "")
- {
- //行的错误提示的设定
- dgv.Rows[e.RowIndex].ErrorText = "值未输入。";
- //取消已经输入的内容,还原成上次的输入内容。
- //dgv.CancelEdit()
- //取消之后的动作
- e.Cancel = true;
- }
- }
- private void DataGridView1_CellValidated(object sender, DataGridViewCellEventArgs e)
- {
- DataGridView dgv = (DataGridView)sender;
- //验证通过的话,则清空行的错误提示
- dgv.Rows[e.RowIndex].ErrorText = null;
- }
- }
- }
c# winform 关于DataGridView的一些操作
最新推荐文章于 2024-06-14 15:55:33 发布