DataGridView 是 Windows Forms 中的一个控件,用于显示和编辑表格数据。EditMode 属性控制用户如何开始编辑单元格,当设置为 EditOnEnter 时,焦点进入单元格时会立即进入编辑模式。
当 DataGridView.EditMode 设置为 EditOnEnter 时,直接点击行会导致单元格进入编辑状态,而不是选中整行,这使得删除行的操作变得困难。
// 设置 DataGridView 属性
dataGridView1.EditMode = DataGridViewEditMode.EditOnEnter;
dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
dataGridView1.MultiSelect = false; // 如果只需要单选
// 删除选中行的代码
private void DeleteSelectedRows()
{
if (dataGridView1.SelectedRows.Count > 0)
{
foreach (DataGridViewRow row in dataGridView1.SelectedRows)
{
if (!row.IsNewRow)
{
dataGridView1.Rows.Remove(row);
}
}
}
}
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex >= 0 && e.ColumnIndex >= 0)
{
dataGridView1.Rows[e.RowIndex].Selected = true;
}
}
// 设置 DataGridView 属性
dataGridView1.EditMode = DataGridViewEditMode.EditOnEnter;
dataGridView1.RowHeadersVisible = true;
// 处理 RowHeaderMouseClick 事件
private void dataGridView1_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
if (e.RowIndex >= 0)
{
dataGridView1.Rows[e.RowIndex].Selected = true;
}
}
这种设置常见于需要快速编辑数据的应用程序中,如:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// 初始化 DataGridView
dataGridView1.EditMode = DataGridViewEditMode.EditOnEnter;
dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
dataGridView1.MultiSelect = false;
// 添加一些示例数据
dataGridView1.Columns.Add("Column1", "列1");
dataGridView1.Columns.Add("Column2", "列2");
dataGridView1.Rows.Add("数据1", "数据A");
dataGridView1.Rows.Add("数据2", "数据B");
// 添加删除按钮
Button deleteButton = new Button();
deleteButton.Text = "删除选中行";
deleteButton.Click += DeleteButton_Click;
this.Controls.Add(deleteButton);
deleteButton.Top = dataGridView1.Bottom + 10;
}
private void DeleteButton_Click(object sender, EventArgs e)
{
if (dataGridView1.SelectedRows.Count > 0)
{
if (MessageBox.Show("确定要删除选中的行吗?", "确认",
MessageBoxButtons.YesNo) == DialogResult.Yes)
{
foreach (DataGridViewRow row in dataGridView1.SelectedRows)
{
if (!row.IsNewRow)
{
dataGridView1.Rows.Remove(row);
}
}
}
}
else
{
MessageBox.Show("请先选择要删除的行");
}
}
}
通过以上方法,您可以在 DataGridView.EditMode 设置为 EditOnEnter 时,仍然能够方便地选择和删除行。