Я ищу способ включить выбор нескольких строк в DataGridView-Control, но отключить выбор нескольких ячеек.
Что я пробовал до сих пор:
- DataGridView.MultiSelect = true позволяет выбрать несколько строк и ячеек
- ClearSelection () в DataGridView_CellMouseClick-Event и повторный выбор последней выделенной ячейки выглядит не очень хорошо (вы видите, что отмена выделения старой ячейки и затем выбор новой ячейки; SuspendLayout () и ResumeLayout () не помогают)
- DataGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect не является опцией: если пользователь щелкает ячейку, должна быть выбрана только эта ячейка
Это для функции экспорта: пользователь должен иметь возможность экспортировать выбранные строки в файл, но в целом он не должен иметь возможность выбирать более одной ячейки (для копирования и вставки и т. Д.).
С уважением,
Inno
----- [ОБНОВЛЕНИЕ] -----
Вот моя реализация. Работает нормально (комментарии убраны для компактности):
using System.Windows.Forms;
namespace YourAmazingNamespace
{
public partial class SpecialSelectDataGridView: DataGridView
{
public SpecialSelectDataGridView()
{
InitializeComponent();
}
protected override void SetSelectedCellCore(int columnIndex, int rowIndex, bool selected)
{
ResetSelectedCells();
base.SetSelectedCellCore(columnIndex, rowIndex, selected);
}
void ResetSelectedCells()
{
foreach (DataGridViewCell cell in SelectedCells) {
base.SetSelectedCellCore(cell.ColumnIndex, cell.RowIndex, false);
}
}
}
}
Несколько строк выбираются с помощью MultiSelect = true (значение по умолчанию), и выбранные в данный момент ячейки сбрасываются путем вызова ResetSelectedCells () перед выбором новой.
HTH, спасибо и всего наилучшего,
Inno