Я создал пользовательский элемент управления, это FlowLayoutPanel, в который я поместил множество других пользовательских элементов управления (только кнопки, каждый с тремя надписями и наложенным PictureBox)
Работает нормально примерно с 100 кнопками, но увеличьте их до 1000, и проблема в этом. Увеличьте его до 5000, и он просто умрет через 20 секунд.
У меня очень мало пользовательского кода, и я разумно использую макет приостановки и возобновления.
Так что я делаю не так? Я уверен, что мой (довольно быстрый) компьютер должен обрабатывать несколько тысяч кнопок и меток.
(Я довольно новичок в C # GUI, так что, возможно, мне все равно придется делать все по-другому.)
Редактировать 1:
На данный момент это практически единственный пользовательский код:
flowLayoutPanel1.SuspendLayout();
foreach (DataRow row in dt.Rows) // dt is from a DB query
{
flowLayoutPanel1.Controls.Add(new PersonButton(row));
}
flowLayoutPanel1.ResumeLayout();
и в конструкторе PersonButton:
this.label1.Text = row["FirstName"].ToString().Trim() + " "
+ row["Surname"].ToString().Trim();
(К нему должна быть приложена картинка, но я не уверен, что кто-нибудь ее увидит.)
Редактировать 2:
Полагаю, мне действительно следует использовать DataGridView или ListView, но я хотел больше, чем просто строка текста и маленький значок в строке; Я хотел, чтобы он выглядел аналогично представлению загрузок в Firefox (Ctrl + J). (См. Скриншот)
Большое спасибо за ваш вклад, кстати. Я думаю, мне придется переосмыслить ...
альтернативный текст http://img156.imageshack.us/img156/1057/capture.png