DataGridView.CellValueChanged 事件
在单元格的值更改时发生。
private void DataGridView1_CellValueChanged( object sender, DataGridViewCellEventArgs e) { // Update the balance column whenever the value of any cell changes. UpdateBalance(); } private void DataGridView1_RowsRemoved( object sender, DataGridViewRowsRemovedEventArgs e) { // Update the balance column whenever rows are deleted. UpdateBalance(); } private void UpdateBalance() { int counter; int balance; int deposit; int withdrawal; // Iterate through the rows, skipping the Starting Balance row. for (counter = 1; counter < (DataGridView1.Rows.Count - 1); counter++) { deposit = 0; withdrawal = 0; balance = int.Parse(DataGridView1.Rows[counter - 1] .Cells["Balance"].Value.ToString()); if (DataGridView1.Rows[counter].Cells["Deposits"].Value != null) { // Verify that the cell value is not an empty string. if (DataGridView1.Rows[counter] .Cells["Deposits"].Value.ToString().Length != 0) { deposit = int.Parse(DataGridView1.Rows[counter] .Cells["Deposits"].Value.ToString()); } } if (DataGridView1.Rows[counter].Cells["Withdrawals"].Value != null) { if (DataGridView1.Rows[counter] .Cells["Withdrawals"].Value.ToString().Length != 0) { withdrawal = int.Parse(DataGridView1.Rows[counter] .Cells["Withdrawals"].Value.ToString()); } } DataGridView1.Rows[counter].Cells["Balance"].Value = (balance + deposit + withdrawal).ToString(); } }
//
DataGridView.CellEndEdit 事件
在为当前选定的单元格停止编辑模式时发生。
private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e) { // Validate the CompanyName entry by disallowing empty strings. if (dataGridView1.Columns[e.ColumnIndex].Name == "CompanyName") { if (String.IsNullOrEmpty(e.FormattedValue.ToString())) { dataGridView1.Rows[e.RowIndex].ErrorText = "Company Name must not be empty"; e.Cancel = true; } } } void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e) { // Clear the row error in case the user presses ESC. dataGridView1.Rows[e.RowIndex].ErrorText = String.Empty; }
using System; using System.Drawing; using System.Windows.Forms; public class Form1 : Form { private DataGridView dataGridView1 = new DataGridView(); private Bitmap highPriImage; private Bitmap mediumPriImage; private Bitmap lowPriImage; public Form1() { // Initialize the images. try { highPriImage = new Bitmap("highPri.bmp"); mediumPriImage = new Bitmap("mediumPri.bmp"); lowPriImage = new Bitmap("lowPri.bmp"); } catch (ArgumentException) { MessageBox.Show("The Priority column requires Bitmap images " + "named highPri.bmp, mediumPri.bmp, and lowPri.bmp " + "residing in the same directory as the executable file."); } // Initialize the DataGridView. dataGridView1.Dock = DockStyle.Fill; dataGridView1.AllowUserToAddRows = false; dataGridView1.Columns.AddRange( new DataGridViewTextBoxColumn(), new DataGridViewImageColumn()); dataGridView1.Columns[0].Name = "Balance"; dataGridView1.Columns[1].Name = "Priority"; dataGridView1.Rows.Add("-100", "high"); dataGridView1.Rows.Add("0", "medium"); dataGridView1.Rows.Add("100", "low"); dataGridView1.CellFormatting += new System.Windows.Forms.DataGridViewCellFormattingEventHandler( this.dataGridView1_CellFormatting); this.Controls.Add(dataGridView1); } // Changes how cells are displayed depending on their columns and values. private void dataGridView1_CellFormatting(object sender, System.Windows.Forms.DataGridViewCellFormattingEventArgs e) { // Set the background to red for negative values in the Balance column. if (dataGridView1.Columns[e.ColumnIndex].Name.Equals("Balance")) { Int32 intValue; if (Int32.TryParse((String)e.Value, out intValue) && (intValue < 0)) { e.CellStyle.BackColor = Color.Red; e.CellStyle.SelectionBackColor = Color.DarkRed; } } // Replace string values in the Priority column with images. if (dataGridView1.Columns[e.ColumnIndex].Name.Equals("Priority")) { // Ensure that the value is a string. String stringValue = e.Value as string; if (stringValue == null) return; // Set the cell ToolTip to the text value. DataGridViewCell cell = dataGridView1[e.ColumnIndex, e.RowIndex]; cell.ToolTipText = stringValue; // Replace the string value with the image value. switch (stringValue) { case "high": e.Value = highPriImage; break; case "medium": e.Value = mediumPriImage; break; case "low": e.Value = lowPriImage; break; } } } public static void Main() { Application.Run(new Form1()); } }