use*_*084 5 c# datagridview winforms
我有一个函数删除datagridview中右键单击删除的单行.
码:
private void dataGridView1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
var hti = dataGridView1.HitTest(e.X, e.Y);
if (hti.RowIndex != -1)
{
dataGridView1.ClearSelection();
dataGridView1.Rows[hti.RowIndex].Selected = true;
}
}
}
private void DeleteRow_Click(object sender, EventArgs e)
{
Int32 rowToDelete = dataGridView1.Rows.GetFirstRow(DataGridViewElementStates.Selected);
if (rowToDelete != -1)
{
dataGridView1.Rows.RemoveAt(rowToDelete);
dataGridView1.ClearSelection();
}
}
Run Code Online (Sandbox Code Playgroud)
但现在我想在选择时删除多行.
首先我不知道为什么我不能选择多行.
其次我想使用删除按钮删除多个删除并右键单击鼠标删除.
有人能帮我吗?
编辑:看看你的代码.您正在根据HitTest方法的结果设置选定的行.该DataGridView属性SelectedRows将确定选择哪些行.不确定为什么你需要执行a HitTest,但是你可能还没有完全解释所需的功能.
if (e.Button == MouseButtons.Right)
{
var hti = dataGridView1.HitTest(e.X, e.Y);
if (hti.RowIndex != -1)
{
dataGridView1.ClearSelection();
dataGridView1.Rows[hti.RowIndex].Selected = true;
}
}
Run Code Online (Sandbox Code Playgroud)
确保在数据网格上将MultiSelect属性设置为true.
然后,您可以SelectedRows在您选择的情况下使用该物业:
foreach (DataGridViewRow row in DataGridView1.SelectedRows)
{
DataGridView1.Rows.Remove(row);
}
Run Code Online (Sandbox Code Playgroud)