Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何选择没有键的行_C#_Winforms_Datagridview - Fatal编程技术网

C# 如何选择没有键的行

C# 如何选择没有键的行,c#,winforms,datagridview,C#,Winforms,Datagridview,有许多方法可以通过编程方式选择行,例如,如果我们知道行索引,或者如果我们知道类似主键的列(包含唯一值的列) 现在,当我创建自定义控件时,我想知道是否有其他方法可以使用其他方法选择行 假设我使用名为BackupRow的变量备份每个OnSelectionChanged事件中所选的记录 然后,当我使用columnheader单击对数据进行排序时,在OnSorted中,我希望使用BackupRow选择网格 这样可能吗 谢谢。没有其他方法。。为了解决你的问题,你可以 备份索引(在整数列表或数组中),无需备

有许多方法可以通过编程方式选择行,例如,如果我们知道行索引,或者如果我们知道类似主键的列(包含唯一值的列)

现在,当我创建自定义控件时,我想知道是否有其他方法可以使用其他方法选择行

假设我使用名为BackupRow的变量备份每个OnSelectionChanged事件中所选的记录

然后,当我使用columnheader单击对数据进行排序时,在OnSorted中,我希望使用BackupRow选择网格

这样可能吗


谢谢。

没有其他方法。。为了解决你的问题,你可以


备份索引(在整数列表或数组中),无需备份完整的行。。如果你真的需要,你也要这样做。但在任何情况下都需要备份索引。。并根据这些(备份)索引从排序网格中选择行

如果您的数据计数从未改变,并且您可以确切地知道排序算法,那么它是可能的,但对真实值不可靠

作为一个伪示例:您有a-B-C-D行,当前为B

如果行按上升顺序(A到Z或0到100)排序,然后按下降顺序(Z到A或100到0)排序,那么它只是: 假设你的, 总行数=45; 上升排序的当前行索引=30

排序后代()

当前的新索引=(总行-上升排序行索引)-1; //-1用于索引[0]校正

你当前的新指数=45-30-1; 您当前的新索引=14

另一种方法是:

实现您自己的排序算法并创建一个委托/指针-我无法想象现在哪个更好-

然后,在执行每个排序操作时,调查所选行并再次选择

但正如我所说的,这些都是不可信的方式,没有人会喜欢/建议

另一种意见:

你的问题我不清楚这个意见是为了澄清可能的误解

如果您希望“当用户选择一行或对列值进行排序时,完整的行单元格将自动高亮显示-显示为用户所选”

然后它位于datagridview的SelectionMode属性下

dataGridView1.SelectionMode = FullRowSelect;

为什么不直接使用BackupRow.Index?使用备份行排序是什么意思?例如,我有记录:ABCD当前行是:B然后,我将其反向排序为:DCBA当前行是:C我想要的是,当前行:排序后仍然是B