Hi Ian, I remember years ago having similar problems with the DataGridView. I then adopted the practise of binding my grid to a strongly typed DataSet I make in the designer. Even for knock-up utilities I find it convenient and readable to make an XSD and bind the grid to it. It's then easy to go myrow.Delete() and AcceptChanges() and the grid responds.
I'm not sure how you're filling your grid rows, so maybe my comments are not directly relevant but I thought I'd mention it anyway. You're brave to get into DataGridView virtual mode, as even though I've happily pushed the grid to its limits over the years I've never needed virtual mode before. Strangely enough, several years ago I wrote a nearly identical app to yours. It scans folders for files with identical MD5 hashes and shows the duplicates in a tree and you can then "clean" the duplicates. I just ran it and to my surprise it still works, but it's a bit quirky and not suitable for public consumption. Cheers, Greg
