gpt4 book ai didi

c# - 不按 Control 键选择多行

转载 作者:行者123 更新时间:2023-11-30 14:18:46 31 4
gpt4 key购买 nike

我有一个 gridview,我可以在其中通过按控制键来选择多行。是否可以在不按控制键的情况下实现相同的效果。

最佳答案

由于 .net 默认操作还将更新 datagridviewslectedrows,因此您需要一个数组来保留旧的选择:

DataGridViewRow[] old; 

将在 CellMouseDown 更新(在默认 .net 操作修改您的选择之前):

private void dataGridView1_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
{
old = new DataGridViewRow[dataGridView1.SelectedRows.Count];
dataGridView1.SelectedRows.CopyTo(old,0);
}

之后,您可以在 RowHeaderMouseClick 中进行更改(因为 RowHeaderSelect 是默认的数据 GridView selectionmode)或使用 CellMouseClickFullRowSelect 并重新选择那些旧的选定行:

private void dataGridView1_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
foreach (DataGridViewRow gr in old)
{
if (gr == dataGridView1.CurrentRow)
{
gr.Selected = false;
}
else
{
gr.Selected = true;
}
}
}

编辑:更好的解决方案:
您需要实现自己的 datagridview 派生自原始 View 并覆盖 OnCellMouseDown&OnCellMouseClick 以取消默认的取消选择操作并使其平滑。像这样创建一个新类:

Using System;
Using System.Windows.Forms;

public class myDataGridView:DataGridView
{
protected override void OnCellMouseDown(DataGridViewCellMouseEventArgs e)
{
//base.OnCellMouseDown(e);
this.Rows[e.RowIndex].Selected = !this.Rows[e.RowIndex].Selected;
}

protected override void OnCellMouseClick(DataGridViewCellMouseEventArgs e)
{
//base.OnCellMouseClick(e);
}
}

并在您的 Form.Designer.cs 中将 DataGridView 对象 datagridview1(如果这是名称)更改为 myDataGridView 对象.... ..

例如:改变

private System.Windows.Forms.DataGridView dataGridView1;

private myDataGridView dataGridView1;

和改变

this.dataGridView1=new System.Windows.Forms.DataGridView()

this.dataGridView1=new myDataGridView ()

关于c# - 不按 Control 键选择多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3915745/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com