У меня есть приложение .NET Winforms в C # с DataGridView, которое доступно только для чтения и заполнено некоторым количеством строк. Мне бы хотелось, чтобы функциональность была похожа на подробное представление Windows Explorer (и многих других приложений), например.
Я бы хотел, чтобы DataGridView вел себя так, чтобы, когда у него был фокус, если вы начали печатать, текущий выбор строки будет переходить к строке, в которой начинается значение (строка) ячейки 0 (т. Е. Первый столбец в строке) с набранными вами символами.
Например, если у меня есть DataGridView с 1 столбцом и следующими строками:
- Bob
- Jane
- Jason
- John
- Leroy
- Sam
Если DataGridView имеет фокус, и я нажимаю клавишу «b» на моей клавиатуре, выбранная строка теперь «Боб». Если я быстро наберу клавиши 'ja', выбранная строка - Джейн. Если я быстро введу буквы «jas», выбранная строка - «Джейн». Если я нажму клавишу «z», ничего не будет выбрано (так как ничто не начинается с Z).
Аналогично, если в настоящий момент выбрана Джейн, и я продолжаю печатать букву 'j', выбор будет циклически повторяться до Джейсона, затем до Джона, а затем обратно до Джейн, каждый раз, когда я нажимаю клавишу j.
Я какое-то время занимался поиском (и "переполнением стека" :-)) и не могу найти никаких примеров функциональности этого типа. У меня в голове есть грубая идея сделать это через какой-то недолговечный поток таймера, собирая нажатия клавиш на событиях KeyPress для DataGridView и выбирая строки на основе этих собранных нажатий клавиш, соответствующих Cells [0] .Value.StartsWith () тип состояния. Но похоже, что должен быть более простой способ, которого я просто не вижу.
Любые идеи будут высоко оценены. Спасибо!