ファイルとフォルダーのリストを入力する DataGridView があります。DataGridView をアルファベット順に並べ替えたいのですが、すべてのフォルダーがファイルの上にあります。一般的な考え方は次のとおりです。
.\folder1\
.\folder2\
.\folder3\
.\file1
.\file2
さまざまなファイルタイプのアイコンを含む列があるため、フォルダー アイコンとファイル アイコンがあります。2 つの列の間にある唯一の違いです。ここに写真があります:
したがって、ファイルとフォルダーのアイコンが異なることがわかります。これが私の現在のソート方法です:
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 をソートすることは可能ですか? もしそうなら、どのように?