在C#中,使用DataGridView控件處理編輯操作通常涉及以下幾個步驟:
EditMode
屬性為EditOnEnter
或EditOnKeystroke
來實現。CellBeginEdit
事件。你可以通過為該事件添加事件處理器來執行自定義操作。CellBeginEdit
事件處理器中,你可以通過訪問DataGridViewCell
對象的Value
屬性來獲取當前單元格的值。要設置新值,可以直接修改Value
屬性。CellEndEdit
事件。在這個事件中,你可以執行任何必要的驗證或更新操作。CancelEdit
事件。你可以通過為該事件添加事件處理器來執行自定義操作,例如恢復原始值或取消更改。下面是一個簡單的示例,演示了如何在C#中使用DataGridView控件處理編輯操作:
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
// 綁定數據源(示例數據)
dataGridView1.DataSource = new DataTable();
dataGridView1.DataSource.Columns.Add("Name", typeof(string));
dataGridView1.DataSource.Columns.Add("Age", typeof(int));
// 啟用編輯功能
dataGridView1.EditMode = DataGridViewEditMode.EditOnEnter;
// 處理單元格的編輯事件
dataGridView1.CellBeginEdit += DataGridView1_CellBeginEdit;
dataGridView1.CellEndEdit += DataGridView1_CellEndEdit;
dataGridView1.CancelEdit += DataGridView1_CancelEdit;
}
private void DataGridView1_CellBeginEdit(object sender, DataGridViewCellEventArgs e)
{
// 獲取當前單元格的值
string originalValue = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
MessageBox.Show($"開始編輯:{originalValue}");
}
private void DataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
// 獲取新值并驗證
string newValue = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
int age;
if (int.TryParse(newValue, out age) && age >= 0 && age <= 120)
{
MessageBox.Show($"結束編輯:{newValue}");
}
else
{
// 如果驗證失敗,取消編輯
dataGridView1.CancelEdit();
MessageBox.Show("年齡無效,編輯已取消。");
}
}
private void DataGridView1_CancelEdit(object sender, EventArgs e)
{
// 恢復原始值
string originalValue = dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[dataGridView1.CurrentCell.ColumnIndex].Value.ToString();
MessageBox.Show($"取消編輯:{originalValue}");
}
}
在這個示例中,我們創建了一個包含“Name”和“Age”列的DataGridView控件,并綁定了示例數據。我們啟用了編輯功能,并為CellBeginEdit
、CellEndEdit
和CancelEdit
事件添加了事件處理器。在CellBeginEdit
事件中,我們獲取并顯示當前單元格的原始值。在CellEndEdit
事件中,我們獲取新值并進行驗證。如果驗證失敗,我們取消編輯并顯示一條錯誤消息。在CancelEdit
事件中,我們恢復原始值并顯示一條消息。