Быстрый грид для специфичной операции (выделение и окрашивание ячеек)
Прошу совета/помощи в следующей задаче.
Дано: Есть программа, написанная на delphi. В основной рабочей области создается большая таблица (200х200). Пользователь выделяет область и окрашивает клеточки в красный цвет. В тонкости программы (зачем это надо) вдаваться сейчас не имеет смысла.
Вот пример рабочей области: http://i.stack.imgur.com/5BslB.png
Задача: переписать программу на .NET (c#)
Проблема: скорость выделения ячеек - очень большие тормоза. В программе на delphi ячейки выделяются мгновенно.
Можно ли как-то оптимизировать таблицу? Другие операции, кроме выделения и закрашивания с ней производиться не будут. Есть ли быстрые сторонние компоненты?
Буду благодарен за любой совет. Спасибо. Готов отблагодарить материально за помощь в решении вопроса.
Какой компонент используется?
Где пример кода, который тормозит? (Нечему там тормозить).
Если нужно только выделение и закрашивание, может и не нужен грид? Рисовать вручную - будет легко и быстро.
Просто интересно: для разных технологий разная реализация контролов? Не с одной библиотеки всё тащится?
Это совершенно разные технологии, не имеющие почти ничего общего.
Какой компонент используется?
Где пример кода, который тормозит? (Нечему там тормозить).
Если нужно только выделение и закрашивание, может и не нужен грид? Рисовать вручную - будет легко и быстро.
Спасибо за ответ. Пробовал и winforms, и wpf. Добавляю gridview (или datagrid в wpf) на форму и в цикле добавляю колонки-ряды. Ширина колонок минимальна - чтобы таблица вмещалась в рабочую область. Пытаюсь выделить 100 ячеек мышкой, выделение тормозит. Может у Вас есть пример кода, где бы этот процесс выполнялся быстро?
По поводу рисования - можно попробовать. Правда никогда не имел с этим дел. Ячейки таблицы связаны с матрицей - белая ячейка 0, красная ячейка 1. Ячейки изменяют цвет по double click'у, также ячейки можно выделять и вызывать на них контекстное меню, чтобы окрашивать их разом, копировать и инвертировать цвет. Такое можно/трудоемко реализовывать?
Спасибо.
Код выделения мышкой? м?
Весь код программы:
dataGridView1.RowCount = 200;
dataGridView1.ColumnCount = 200;
foreach (DataGridViewColumn column in dataGridView1.Columns)
{
column.Width = 9;
}
Спасибо за овтет. Остальной код не важен. Какой смысл реализовывать функционал, если выделение ячеек на таком коде визуально тормозит?
Спасибо за овтет. Остальной код не важен. Какой смысл реализовывать функционал, если выделение ячеек на таком коде визуально тормозит?
Странные люди. Вы или к гадалке обращайтесь с таким подходом - хочу то,не знаю что - или если уж соизволили обратиться на форум - четко отвечайте на вопросы, если хотите что бы вам помогли - а не талдычте "важен-не важен". Тут по картинкам не гадают.
Судя по всему у тебя при перерисовке происходит вызов какой то "тяжелой" функции, например вычисления значения или получения его из базы, или для каждой ячейки происходит перерисовка таблицы заново (что кстати наиболее вероятно). Для того что бы дать конкретные рекомендации - надо видеть код, который вызывается в моменты рисования, а не те три строчки, которые ты привел.
Судя по всему у тебя при перерисовке происходит вызов какой то "тяжелой" функции, например вычисления значения или получения его из базы, или для каждой ячейки происходит перерисовка таблицы заново (что кстати наиболее вероятно). Для того что бы дать конкретные рекомендации - надо видеть код, который вызывается в моменты рисования, а не те три строчки, которые ты привел.
Нет никакой программы - это первый шаг к ее созданию. На скриншоте программа на delphi.
Это ВЕСЬ код. Голый грид. Без всего. И выделение мышкой тормозит. Я понимаю, что происходит перерисовка, потому и спрашиваю, что делать, если ГОЛЫЙ грид тормозит.
И да, я четко описал, чего хочу в первом сообщении.