我有一个用文件和文件夹列表填充的 DataGridView。我想按字母顺序对 DataGridView 进行排序,但所有文件夹都位于文件上方。这是一般的想法:
.\folder1\
.\folder2\
.\folder3\
.\file1
.\file2
我有一列包含不同文件类型的图标,所以有一个文件夹图标和文件图标。这是我在两列之间的唯一区别。这是一张图片:
所以你可以看到文件和文件夹有不同的图标。这是我目前的排序方法:
private void dgvFiles_SortCompare(object sender, DataGridViewSortCompareEventArgs e) {
if(e.Column.Index == 1) {
// ???
}
else if(e.Column.Index == 4) {
string cellValue1 = e.CellValue1.ToString(),
cellValue2 = e.CellValue2.ToString();
if(!string.IsNullOrWhiteSpace(cellValue1) && !string.IsNullOrWhiteSpace(cellValue2)) {
cellValue1 = Regex.Replace(cellValue1, "[^.0-9]", "");
cellValue2 = Regex.Replace(cellValue2, "[^.0-9]", "");
int a = int.Parse(cellValue1), b = int.Parse(cellValue2);
e.SortResult = a.CompareTo(b);
e.Handled = true;
}
}
}
是否可以使用自定义 SortCompare 方法以这种方式对 DataGridView 进行排序?如果是这样,怎么做?