您的位置:首页 > 编程语言 > C#

c# winform 关于DataGridView的一些操作

2011-12-06 09:51 459 查看
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;

}

}

}

来源:/article/4066528.html



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: