在C#中,使用DataGridView控件處理編輯操作通常涉及以下幾個(gè)步驟:
EditMode
屬性為EditOnEnter
或EditOnKeystroke
來實(shí)現(xiàn)。CellBeginEdit
事件。你可以通過為該事件添加事件處理器來執(zhí)行自定義操作。CellBeginEdit
事件處理器中,你可以通過訪問DataGridViewCell
對(duì)象的Value
屬性來獲取當(dāng)前單元格的值。要設(shè)置新值,可以直接修改Value
屬性。CellEndEdit
事件。在這個(gè)事件中,你可以執(zhí)行任何必要的驗(yàn)證或更新操作。CancelEdit
事件。你可以通過為該事件添加事件處理器來執(zhí)行自定義操作,例如恢復(fù)原始值或取消更改。下面是一個(gè)簡單的示例,演示了如何在C#中使用DataGridView控件處理編輯操作:
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
// 綁定數(shù)據(jù)源(示例數(shù)據(jù))
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)
{
// 獲取當(dāng)前單元格的值
string originalValue = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
MessageBox.Show($"開始編輯:{originalValue}");
}
private void DataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
// 獲取新值并驗(yàn)證
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($"結(jié)束編輯:{newValue}");
}
else
{
// 如果驗(yàn)證失敗,取消編輯
dataGridView1.CancelEdit();
MessageBox.Show("年齡無效,編輯已取消。");
}
}
private void DataGridView1_CancelEdit(object sender, EventArgs e)
{
// 恢復(fù)原始值
string originalValue = dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[dataGridView1.CurrentCell.ColumnIndex].Value.ToString();
MessageBox.Show($"取消編輯:{originalValue}");
}
}
在這個(gè)示例中,我們創(chuàng)建了一個(gè)包含“Name”和“Age”列的DataGridView控件,并綁定了示例數(shù)據(jù)。我們啟用了編輯功能,并為CellBeginEdit
、CellEndEdit
和CancelEdit
事件添加了事件處理器。在CellBeginEdit
事件中,我們獲取并顯示當(dāng)前單元格的原始值。在CellEndEdit
事件中,我們獲取新值并進(jìn)行驗(yàn)證。如果驗(yàn)證失敗,我們?nèi)∠庉嫴@示一條錯(cuò)誤消息。在CancelEdit
事件中,我們恢復(fù)原始值并顯示一條消息。