[C#] Вид - Таблица
табличка с изменяемыми вручную по ширине колонками
судя по тому что такая табличка используется во многих программах (тот же проводник винды, менеджеры закачек, файлменеджеры, дефрагеры итд) наверное существует для нее стандартный контрол
Это стандартный ListView (ага, в эксплорере он же) с обработчиками отрисовки строк.
Это не WPF. Врядли.
а как в нем сортить? такие чтоб справа на каждоу колонке стрелочки серые, при нажатии на заголовок колонки сортит - есть для этого чтото стандартное или вручную писать?
а как в нем сортить? такие чтоб справа на каждоу колонке стрелочки серые, при нажатии на заголовок колонки сортит - есть для этого чтото стандартное или вручную писать?
Вручную. Никто не знает как именно сортировать данные вы хотите. :) Хотя оставляю за собой право на ошибку.
С другой стороны есть DataGridView - это если набор данных на клиенте показываете, он вроде как с датасурсами интегрироваться может, а они - с SQL. Впрочим я сам всегда пользовался сбоственными сортировками.
Проще создать свой датасорс, впихнуть в него данные, привязать к этому делу датагрид и по клику в шапке оно само прекрасно сортируется (если конечно свой алгоритм сортировки не применять)
мне какраз для работы с БД
извиняюсь что напудрил мозги с ListView (хотя тоже пригодится)
писать туда данные надо из моих обьектов (не из бд)
для этого создаю DataTable, указываю столбцы, ввожу строки, надо только пробиндить их со столбцами датагридвью.
как его не мучал не пашет.. не подскажете?
писать туда данные надо из моих обьектов (не из бд)
для этого создаю DataTable, указываю столбцы, ввожу строки, надо только пробиндить их со столбцами датагридвью.
как его не мучал не пашет.. не подскажете?
Подскажу - Надо DataSet инициализировать и к DataGridView подключить.
Вообщем я сейчас уже слабо помню, ибо давно не пользовался.
P.S. Нашел у себя собственную реализацию - скидываю как пример
я его какраз подключить не могу
---------
все так просто =D круто
в DataGridView НЕ работают одновременно CellMouseDown и любой из CellDoubleClick (CellMouseDoubleClick, CellContent...)
соответственно даблклик должен открывать форму, маусдаун вызвать драгендроп
тоесть теперь даблклик оно воспринимает как просто 2 маусдаун
как это вылечить? ну кроме как вставкой в отдельный поток таймера и замеряя кк давно был сделан щелчок в этот cell ))
----
кстати таймер не спасает. оно несколько раз срабатывает почемуто
дблклик по строке, столбцу, ячейке таблицы?
так как клик состоит из маусдаун и маусап - вызывается даусдаун и при клике и при даблклике
не только в ячейках. где угодно
ну клик еще можно переназначить на маусап, а вот даблклик...
как это вылечить? ну кроме как вставкой в отдельный поток таймера и замеряя кк давно был сделан щелчок в этот cell ))
----
кстати таймер не спасает. оно несколько раз срабатывает почемуто
Лучше запоминать время нажатия, и сравнивать его с предыдущим... А таймер, да ещё в отдельном потоке ради DblClick'а - это жестко!
Хотя должно проще решаться. Наврятли разработчики никак не предусмотрели такую ситуацию...
узнать координату клетки из соответствующей коорд контролла
(уточню - когда вызавается ивент DragDrop среди его аргементов есть коорд X, Y. надо узнать какой этим коорд соответствует ряд таблицы)
в листбоксе это так делается
ListBox.IndexFromPoint(ListBox.PointToClient(new Point(e.X, e.Y)));
нашел решение -
HitTest(PointToClient(new Point(e.X, e.Y)).X, PointToClient(new Point(e.X, e.Y)).Y).RowIndex
смешно получилось - промазпв мимо клавиши R попал по Н и стало интересно чтоже делает ф-ия с таким именем))