c# winform 关于DataGridView的一些操作(很全,绝对够用)

来源:互联网 发布:ssd主控测试软件 编辑:程序博客网 时间:2024/06/05 16:27

设置字段名 
设置字段值 
设定单元格表示 Error图标 
设定当前单元格 
取得当前单元格内容 
取得当前单元格的列 Index 
取得当前单元格的行 Index 
向下一行 
向上一行 
取消 DataGridView1 为只读 
设置 DataGridView1 为只读 
设置 DataGridView1 的第2列整列单元格为只读并变色 
设置 DataGridView1 的第3行整行单元格为只读并变色 
设置 DataGridView1 的[0,0]单元格为只读并变色 
设置 DataGridView1 的第2列整列单元格为只读并变色 
设置 DataGridView1 的第3行整行单元格为只读并变色 
设置 DataGridView1 的[0,0]单元格为只读并变色 
设置用户不能手动给 DataGridView1 添加新行 
设置用户可以手动给 DataGridView1 添加新行 
禁止DataGridView1的行删除操作。 
允许DataGridView1的行删除操作。 
DataGridView1的第一列隐藏 
DataGridView1的第一行隐藏 
DataGridView1的第一列显示 
DataGridView1的第一行显示 
列头隐藏 
行头隐藏 
列头显示 
行头显示 
删除名为"Column1"的列 
删除第四列 
删除第三行 
禁止用户改变DataGridView1的所有列的列宽 
禁止用户改变DataGridView1的所有行的行高 
允许用户改变DataGridView1的所有列的列宽 
允许用户改变DataGridView1的所有行的行高 
禁止用户改变DataGridView1的第一列的列宽 
禁止用户改变DataGridView1的第一列的行宽 
第一列的最小列宽设定为 100 
第一行的最小行高设定为 50 
禁止用户改变列头的高度 
禁止用户改变行头的宽度 
设定包括Header和所有单元格的列宽自动调整 
设定包括Header和所有单元格的行高自动调整 
第一列自动调整 
设定列头的宽度可以自动调整 
设定行头的宽度可以自动调整 
让 DataGridView1 的所有列宽自动调整一下。 
让 DataGridView1 的第三列的列宽自动调整一下。 
让 DataGridView1 的所有行高自动调整一下。 
让 DataGridView1 的第一行的行高自动调整一下。 
列头高度自动调整 
行头宽度自动调整 
DataGridView1的左侧2列固定 
DataGridView1 的上3行固定 
改变DataGridView1的第一列列头内容 
改变DataGridView1的第一行行头内容 
改变DataGridView1的左上头部单元内容 
改变DataGridView1的第二列列头内容 
当前单元格是否选择的判断 
获取剪切板的内容,并按行分割 
是否是列头 
按 Tab 分割数据 
行头设定 
单元格内容设定 
DataGridView的行索引+1 
设定单元格的ToolTip内容 
设定列头的单元格的ToolTip内容 
设定行头的单元格的ToolTip内容 
DataGridView 的 ContextMenuStrip 设定 
列的 ContextMenuStrip 设定 
列头的 ContextMenuStrip 设定 
行的 ContextMenuStrip 设定 
单元格的 ContextMenuStrip 设定 
列头的ContextMenuStrip设定 
行头的ContextMenuStrip设定 
如果单元格值是整数时 
当"Column1"列是Bool型且为True时、设定其的ContextMenuStrip 
如果单元格是“Column1”列的单元格 
将单元格值改为大写 
应用该Format,Format完毕。 
单元格列为“Column2”时 
将单元格值设为大写 
解析完毕 
设定单元格的默认值 
单元格值为负整数时,Error图标被表示。 
行的错误提示的设定 
验证通过的话,则清空行的错误提示

  1 using System;  2 using System.Collections.Generic;  3 using System.ComponentModel;  4 using System.Data;  5 using System.Drawing;  6 using System.Text;  7 using System.Windows.Forms;  8   9  10  11 using System.Data.OracleClient; 12  13     14 using System.IO;   15 using System.Data.OleDb;  16  17 namespace TestMouseMove 18 { 19     public partial class Form3 : Form 20     { 21         public Form3() 22         { 23             InitializeComponent(); 24             dgvLoad(); 25         } 26  27         public void dgvLoad() 28         { 29             this.DataGridView1.Columns[0].HeaderCell.Value = "姓名"; 30             this.DataGridView1.Columns[1].HeaderCell.Value = "字段2"; 31             this.DataGridView1.Columns[2].HeaderCell.Value = "字段3"; 32             this.DataGridView1.Columns[3].HeaderCell.Value = "字段4"; 33             this.DataGridView1.Columns[4].HeaderCell.Value = "字段5"; 34  35             this.DataGridView1.Rows.Add("黑色头发", "1行2列", "1行3列", "1行4列", "1行5列"); 36             this.DataGridView1.Rows.Add("紫色头发", "2行2列aaaa", "2行3列", "2行4列", "2行5列"); 37             this.DataGridView1.Rows.Add("蓝色头发", "3行2列", "3行3列", "3行4列", "3行5列"); 38             this.DataGridView1.Rows.Add("红色头发", "4行2列", "4行3列", "4行4列", "4行5列"); 39             this.DataGridView1.Rows.Add("棕色头发", "5行2列", "5行3列", "5行4列", "5行5列"); 40  41             DataGridView1.ShowCellErrors = true; 42             //设定 (0, 0) 的单元格表示 Error图标 43             DataGridView1[3, 3].ErrorText = "这是单元格提示错误信息,也可以再行头显示这个错误提示信息"; 44  45             //设定第4行(Index=3)的行头显示Error图标 46             //DataGridView1.Rows[0].ErrorText = "不能输入负值。"; 47         } 48  49         private void button1_Click(object sender, EventArgs e) 50         { 51             // 设定 (1, 2) 为当前单元格 52             DataGridView1.CurrentCell = DataGridView1[1, 2];             53         } 54  55         private void button2_Click(object sender, EventArgs e) 56         { 57             // 取得当前单元格内容 58             MessageBox.Show(DataGridView1.CurrentCell.Value.ToString()); 59             // 取得当前单元格的列 Index 60             MessageBox.Show(DataGridView1.CurrentCell.ColumnIndex.ToString()); 61             // 取得当前单元格的行 Index 62             MessageBox.Show(DataGridView1.CurrentCell.RowIndex.ToString()); 63         } 64  65         /// <summary> 66         /// 向下遍历 67         /// </summary> 68         /// <param name="sender"></param> 69         /// <param name="e"></param> 70         private void button3_Click(object sender, EventArgs e) 71         { 72             int row = this.DataGridView1.CurrentRow.Index + 1; 73             if (row > this.DataGridView1.RowCount - 1) 74                 row = 0; 75             this.DataGridView1.CurrentCell = this.DataGridView1[0, row]; 76         } 77  78         /// <summary> 79         /// 向上遍历 80         /// </summary> 81         /// <param name="sender"></param> 82         /// <param name="e"></param> 83         private void button4_Click(object sender, EventArgs e) 84         { 85             int row = this.DataGridView1.CurrentRow.Index - 1; 86             if (row < 0) 87                 row = this.DataGridView1.RowCount - 1; 88             this.DataGridView1.CurrentCell = this.DataGridView1[0, row]; 89         } 90  91         private void button5_Click(object sender, EventArgs e) 92         { 93             if (DataGridView1.ReadOnly) 94             { 95                 // 取消 DataGridView1 为只读 96                 DataGridView1.ReadOnly = false; 97                 DataGridView1.DefaultCellStyle.BackColor = Color.White; 98             } 99             else100             {101                 // 设置 DataGridView1 为只读102                 DataGridView1.ReadOnly = true;103                 DataGridView1.DefaultCellStyle.BackColor = Color.Gainsboro;104             }105         }106 107         private void button6_Click(object sender, EventArgs e)108         {109             if (DataGridView1.Columns[1].ReadOnly)110             {111                 // 设置 DataGridView1 的第2列整列单元格为只读并变色112                 DataGridView1.Columns[1].ReadOnly = false;113                 DataGridView1.Columns[1].DefaultCellStyle.BackColor = Color.White;114                 // 设置 DataGridView1 的第3行整行单元格为只读并变色115                 DataGridView1.Rows[2].ReadOnly = false;116                 DataGridView1.Rows[2].DefaultCellStyle.BackColor = Color.White;117                 // 设置 DataGridView1 的[0,0]单元格为只读并变色118                 DataGridView1[0, 0].ReadOnly = false;119                 DataGridView1.Rows[0].Cells[0].Style.BackColor = Color.White; 120             }121             else122             {123                 // 设置 DataGridView1 的第2列整列单元格为只读并变色124                 DataGridView1.Columns[1].ReadOnly = true;125                 DataGridView1.Columns[1].DefaultCellStyle.BackColor = Color.Gainsboro;126                 // 设置 DataGridView1 的第3行整行单元格为只读并变色127                 DataGridView1.Rows[2].ReadOnly = true;128                 DataGridView1.Rows[2].DefaultCellStyle.BackColor = Color.Gainsboro;129                 // 设置 DataGridView1 的[0,0]单元格为只读并变色130                 DataGridView1[0, 0].ReadOnly = true;131                 DataGridView1.Rows[0].Cells[0].Style.BackColor = Color.Gainsboro; 132             }133         }134 135         private void button7_Click(object sender, EventArgs e)136         {137             if (DataGridView1.EditMode.Equals(DataGridViewEditMode.EditOnEnter))138             {139                 DataGridView1.EditMode = DataGridViewEditMode.EditProgrammatically;140                 DataGridView1.DefaultCellStyle.BackColor = Color.Red;141             }142             else143             {144                 DataGridView1.EditMode = DataGridViewEditMode.EditOnEnter;145                 DataGridView1.DefaultCellStyle.BackColor = Color.White;146             }147         }148 149         private void button8_Click(object sender, EventArgs e)150         {151             DataGridView1.Rows[DataGridView1.CurrentCell.RowIndex].Cells[DataGridView1.CurrentCell.ColumnIndex].Style.BackColor = Color.White;152             DataGridView1.BeginEdit(true);153         }154 155         private void button9_Click(object sender, EventArgs e)156         {157             if (DataGridView1.AllowUserToAddRows)158             {159                 // 设置用户不能手动给 DataGridView1 添加新行160                 DataGridView1.AllowUserToAddRows = false;161             }162             else163             {164                 // 设置用户可以手动给 DataGridView1 添加新行165                 DataGridView1.AllowUserToAddRows = true;166             }167         }168 169         private void button10_Click(object sender, EventArgs e)170         {171             if (DataGridView1.AllowUserToDeleteRows)172             {173                 // 禁止DataGridView1的行删除操作。174                 DataGridView1.AllowUserToDeleteRows = false;175                 DataGridView1.DefaultCellStyle.BackColor = Color.Wheat;176             }177             else178             {179                 // 允许DataGridView1的行删除操作。180                 DataGridView1.AllowUserToDeleteRows = true;181                 DataGridView1.DefaultCellStyle.BackColor = Color.White;182             }183         }184 185         private void button11_Click(object sender, EventArgs e)186         {187             if (DataGridView1.Columns[0].Visible)188             {189                 // DataGridView1的第一列隐藏190                 DataGridView1.Columns[0].Visible = false;191                 // DataGridView1的第一行隐藏192                 DataGridView1.Rows[0].Visible = false;193             }194             else195             {196                 // DataGridView1的第一列显示197                 DataGridView1.Columns[0].Visible = true;198                 // DataGridView1的第一行显示199                 DataGridView1.Rows[0].Visible = true;200             }201         }202 203         private void button12_Click(object sender, EventArgs e)204         {205             if (DataGridView1.ColumnHeadersVisible)206             {207                 // 列头隐藏208                 DataGridView1.ColumnHeadersVisible = false;209                 // 行头隐藏210                 DataGridView1.RowHeadersVisible = false;211             }212             else213             {214                 // 列头显示215                 DataGridView1.ColumnHeadersVisible = true;216                 // 行头显示217                 DataGridView1.RowHeadersVisible = true;218             }219         }220 221         private void button13_Click(object sender, EventArgs e)222         {223             // 删除名为"Column1"的列224             DataGridView1.Columns.Remove("Column1");225             // 删除第四列226             DataGridView1.Columns.RemoveAt(2);227             // 删除第三行228             DataGridView1.Rows.RemoveAt(2);229         }230 231         private void button14_Click(object sender, EventArgs e)232         {233             foreach (DataGridViewRow r in DataGridView1.SelectedRows)234             {235                 if (!r.IsNewRow)236                 {237                     DataGridView1.Rows.Remove(r);238                 }239             }240         }241 242         private void button15_Click(object sender, EventArgs e)243         {244             if (DataGridView1.AllowUserToResizeColumns)245             {246                 // 禁止用户改变DataGridView1的所有列的列宽247                 DataGridView1.AllowUserToResizeColumns = false;248                 //禁止用户改变DataGridView1的所有行的行高249                 DataGridView1.AllowUserToResizeRows = false;250             }251             else252             {253                 // 允许用户改变DataGridView1的所有列的列宽254                 DataGridView1.AllowUserToResizeColumns = true;255                 // 允许用户改变DataGridView1的所有行的行高256                 DataGridView1.AllowUserToResizeRows = true;257             }258         }259 260         private void button16_Click(object sender, EventArgs e)261         {262             // 禁止用户改变DataGridView1的第一列的列宽263             DataGridView1.Columns[0].Resizable = DataGridViewTriState.False;264             // 禁止用户改变DataGridView1的第一列的行宽265             DataGridView1.Rows[0].Resizable = DataGridViewTriState.False;266         }267 268         private void button17_Click(object sender, EventArgs e)269         {270             // 第一列的最小列宽设定为 100271             DataGridView1.Columns[0].MinimumWidth = 200;272             // 第一行的最小行高设定为 50273             DataGridView1.Rows[0].MinimumHeight = 50;274         }275 276         private void button18_Click(object sender, EventArgs e)277         {278             // 禁止用户改变列头的高度279             DataGridView1.ColumnHeadersHeightSizeMode =280             DataGridViewColumnHeadersHeightSizeMode.DisableResizing;281             // 禁止用户改变行头的宽度282             DataGridView1.RowHeadersWidthSizeMode =283             DataGridViewRowHeadersWidthSizeMode.DisableResizing;284         }285 286         private void button19_Click(object sender, EventArgs e)287         {288             // 设定包括Header和所有单元格的列宽自动调整289             DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;290             // 设定包括Header和所有单元格的行高自动调整291             DataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;292         }293 294         private void button20_Click(object sender, EventArgs e)295         {296             // 第一列自动调整297             DataGridView1.Columns[0].AutoSizeMode =298             DataGridViewAutoSizeColumnMode.DisplayedCells;299         }300 301         private void button21_Click(object sender, EventArgs e)302         {303             // 设定列头的宽度可以自动调整304             DataGridView1.ColumnHeadersHeightSizeMode =305             DataGridViewColumnHeadersHeightSizeMode.AutoSize;306             // 设定行头的宽度可以自动调整307             DataGridView1.RowHeadersWidthSizeMode =308             DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders;309         }310 311         private void button22_Click(object sender, EventArgs e)312         {313             // 让 DataGridView1 的所有列宽自动调整一下。314             DataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);315         }316 317         private void button23_Click(object sender, EventArgs e)318         {319             // 让 DataGridView1 的第三列的列宽自动调整一下。320             DataGridView1.AutoResizeColumn(2, DataGridViewAutoSizeColumnMode.AllCells);321         }322 323         private void button24_Click(object sender, EventArgs e)324         {325             // 让 DataGridView1 的所有行高自动调整一下。326             DataGridView1.AutoResizeRows(DataGridViewAutoSizeRowsMode.AllCells);327             //让 DataGridView1 的第一行的行高自动调整一下。328             DataGridView1.AutoResizeRow(0, DataGridViewAutoSizeRowMode.AllCells);329         }330 331         private void button25_Click(object sender, EventArgs e)332         {333             // 列头高度自动调整334             DataGridView1.AutoResizeColumnHeadersHeight();335             // 行头宽度自动调整336             DataGridView1.AutoResizeRowHeadersWidth(337             DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders);338         }339 340         private void button26_Click(object sender, EventArgs e)341         {342             // DataGridView1的左侧2列固定343             DataGridView1.Columns[1].Frozen = true;344             DataGridView1.Columns[2].Width = 800;345         }346 347         private void button27_Click(object sender, EventArgs e)348         {349             // DataGridView1 的上3行固定350             DataGridView1.Rows[2].Frozen = true;351             DataGridView1.Rows[3].Height = 500;352         }353 354         private void button28_Click(object sender, EventArgs e)355         {356             DataGridView1.AllowUserToOrderColumns = true;357         }358 359         private void button29_Click(object sender, EventArgs e)360         {361             // 改变DataGridView1的第一列列头内容362             DataGridView1.Columns[0].HeaderCell.Value = "第一列";363             // 改变DataGridView1的第一行行头内容364             DataGridView1.Rows[0].HeaderCell.Value = "第一行";365             // 改变DataGridView1的左上头部单元内容366             DataGridView1.TopLeftHeaderCell.Value = "左上";367 368             // 改变DataGridView1的第二列列头内容369             DataGridView1.Columns[1].HeaderText = "第二列";370         }371 372         private void button30_Click(object sender, EventArgs e)373         {374             Clipboard.SetDataObject(DataGridView1.GetClipboardContent());375         }376 377         private void button31_Click(object sender, EventArgs e)378         {379             //当前单元格是否选择的判断380             if (DataGridView1.CurrentCell == null)381             {382                 return;383             }384             int insertRowIndex = DataGridView1.CurrentCell.RowIndex;385             int insertColumnsIndex = DataGridView1.CurrentCell.ColumnIndex;386             // 获取剪切板的内容,并按行分割387             string pasteText = Clipboard.GetText();388             if (string.IsNullOrEmpty(pasteText))389             {390                 return;391             }392             pasteText = pasteText.Replace(" ", " ");393             pasteText = pasteText.Replace(' ', ' ');394             pasteText.TrimEnd(new char[] { ' ' });395             string[] lines = pasteText.Split(' ');396             bool isHeader = false;397             foreach (string line in lines)398             {399                 // 是否是列头400                 if (isHeader)401                 {402                     isHeader = false;403                     continue;404                 }405                 // 按 Tab 分割数据406                 string[] vals = line.Split(' ');407                 DataGridViewRow row = DataGridView1.Rows[insertRowIndex];408                 // 行头设定409                 //row.HeaderCell.Value = vals[0];410                 // 单元格内容设定411                 for (int i = 0; i < vals.Length; i++)412                 {413                     row.Cells[insertColumnsIndex].Value = vals[i];414                 }415                 // DataGridView的行索引+1416                 insertRowIndex++;417             }418         }419 420         private void button32_Click(object sender, EventArgs e)421         {422             // 设定单元格的ToolTip内容423             DataGridView1[0, 0].ToolTipText = "该单元格的内容不能修改";424             // 设定列头的单元格的ToolTip内容425             DataGridView1.Columns[0].ToolTipText = "该列只能输入数字";426             // 设定行头的单元格的ToolTip内容427             DataGridView1.Rows[0].HeaderCell.ToolTipText = "该行单元格内容不能修改";428 429             DataGridView1.VirtualMode = false;430             DataGridView1.ShowCellToolTips = true;431             432         }433 434         private void DataGridView1_CellToolTipTextNeeded(object sender, DataGridViewCellToolTipTextNeededEventArgs e)435         {436             MessageBox.Show(e.ToolTipText = e.ColumnIndex.ToString() + ", " + e.RowIndex.ToString());437 438         }439 440         private void button33_Click(object sender, EventArgs e)441         {442             // DataGridView 的 ContextMenuStrip 设定443             DataGridView1.ContextMenuStrip = this.ContextMenuStrip1;444             // 列的 ContextMenuStrip 设定445             DataGridView1.Columns[0].ContextMenuStrip = this.ContextMenuStrip2;446             // 列头的 ContextMenuStrip 设定447             DataGridView1.Columns[0].HeaderCell.ContextMenuStrip = this.ContextMenuStrip2;448             // 行的 ContextMenuStrip 设定449             DataGridView1.Rows[0].ContextMenuStrip = this.ContextMenuStrip3;450             // 单元格的 ContextMenuStrip 设定451             DataGridView1[0, 0].ContextMenuStrip = this.ContextMenuStrip4;452         }453 454         private void DataGridView1_CellContextMenuStripNeeded(object sender, DataGridViewCellContextMenuStripNeededEventArgs e)455         {456             DataGridView dgv = (DataGridView)sender;457             if (e.RowIndex < 0)458             {459                 // 列头的ContextMenuStrip设定460                 e.ContextMenuStrip = this.ContextMenuStrip1;461             }462             else if (e.ColumnIndex < 0)463             {464                 // 行头的ContextMenuStrip设定465                 e.ContextMenuStrip = this.ContextMenuStrip2;466             }467             else if (dgv[e.ColumnIndex, e.RowIndex].Value is int)468             {469                 // 如果单元格值是整数时470                 e.ContextMenuStrip = this.ContextMenuStrip3;471             }472         }473 474         private void DataGridView1_RowContextMenuStripNeeded(object sender, DataGridViewRowContextMenuStripNeededEventArgs e)475         {476             DataGridView dgv = (DataGridView)sender;477             // 当"Column1"列是Bool型且为True时、设定其的ContextMenuStrip478             object boolVal = dgv["Column1", e.RowIndex].Value;479             Console.WriteLine(boolVal);480             if (boolVal is bool && (bool)boolVal)481             {482                 e.ContextMenuStrip = this.ContextMenuStrip1;483             }484         }485 486         private void button34_Click(object sender, EventArgs e)487         {488             DataGridView1.BorderStyle = BorderStyle.None;489         }490 491         private void button35_Click(object sender, EventArgs e)492         {493             DataGridView1.CellBorderStyle = DataGridViewCellBorderStyle.SunkenVertical;494         }495 496         private void button36_Click(object sender, EventArgs e)497         {498             DataGridView1.ColumnHeadersBorderStyle = DataGridViewHeaderBorderStyle.Sunken;499         }500 501         private void button37_Click(object sender, EventArgs e)502         {503             DataGridView1.RowHeadersBorderStyle = DataGridViewHeaderBorderStyle.Single;504         }505 506         private void button38_Click(object sender, EventArgs e)507         {508             DataGridView1.GridColor = Color.Red;509         }510 511         private void button40_Click(object sender, EventArgs e)512         {513             //foreach (Control c in this.Controls)514             //{515             //    c.Dispose();    //如果有Panel等窗口的话,还得将子控件给 Dispose掉516             //}517 518             DataGridView1.Dispose();519             520             InitializeComponent();521             dgvLoad();522         }523 524         private void DataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)525         {526             DataGridView dgv = (DataGridView)sender;527             // 如果单元格是“Column1”列的单元格528             if (e.ColumnIndex < 0)529             {530                 return;531             }532             if (dgv.Columns[e.ColumnIndex].Name == "Column1" && e.Value is string)533             {534                 // 将单元格值改为大写535                 string str = e.Value.ToString();536                 e.Value = str.ToUpper();537                 // 应用该Format,Format完毕。538                 e.FormattingApplied = true;539             }540         }541 542         private void DataGridView1_CellParsing(object sender, DataGridViewCellParsingEventArgs e)543         {544             DataGridView dgv = (DataGridView)sender;545             //单元格列为“Column2”时546             if (dgv.Columns[e.ColumnIndex].Name == "Column2" && e.Value is string)547             {548                 //将单元格值设为大写549                 e.Value = e.Value.ToString().ToUpper();550                 //解析完毕551                 e.ParsingApplied = true;552             }553         }554 555         private void DataGridView1_DefaultValuesNeeded(object sender, DataGridViewRowEventArgs e)556         {557             // 设定单元格的默认值558             e.Row.Cells["Column1"].Value = "";559             e.Row.Cells["Column2"].Value = "";560             e.Row.Cells["Column3"].Value = "";561             e.Row.Cells["Column4"].Value = "";562             e.Row.Cells["Column5"].Value = "";563         }564 565         private void DataGridView1_CellErrorTextNeeded(object sender, DataGridViewCellErrorTextNeededEventArgs e)566         {567             DataGridView dgv = (DataGridView)sender;568             // 单元格值为负整数时,Error图标被表示。569             object cellVal = dgv[e.ColumnIndex, e.RowIndex].Value;570             if (cellVal is int && ((int)cellVal) < 0)571             {572                 e.ErrorText = "不能输入负整数。";573             }574         }575 576         private void DataGridView1_RowErrorTextNeeded(object sender, DataGridViewRowErrorTextNeededEventArgs e)577         {578             DataGridView dgv = (DataGridView)sender;579             if (dgv["Column1", e.RowIndex].Value == DBNull.Value &&580             dgv["Column2", e.RowIndex].Value == DBNull.Value)581             {582                 e.ErrorText =583                 "Column1和Column2必须输入一个值。";584             }585         }586 587         private void DataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)588         {589             DataGridView dgv = (DataGridView)sender;590 591             if (dgv.Columns[e.ColumnIndex].Name == "Column4" && e.FormattedValue.ToString() == "")592             {593                 //行的错误提示的设定594                 dgv.Rows[e.RowIndex].ErrorText = "值未输入。";595                 //取消已经输入的内容,还原成上次的输入内容。596                 //dgv.CancelEdit()597                 //取消之后的动作598                 e.Cancel = true;599             }600         }601 602         private void DataGridView1_CellValidated(object sender, DataGridViewCellEventArgs e)603         {604             DataGridView dgv = (DataGridView)sender;605             //验证通过的话,则清空行的错误提示606             dgv.Rows[e.RowIndex].ErrorText = null;607         }608 609         610     }611 }
原创粉丝点击