У меня есть папка с большим количеством файлов внутри. Я хочу иметь возможность отображать каждый из моих файлов как кнопку. И когда я нажимаю на кнопку, что-то произойдет.
private void Form1_Load(object sender, EventArgs e)
{
int x = 10;
int y = 10;
/// Process the list of files found in the directory.
string[] fileEntries = Directory.GetFiles(@"c:\lotsofDocs");
foreach (string fileName in fileEntries)
{
// do something with fileName
Button newbotton = new Button();
newbotton.AutoSize = true;
newbotton.Text = fileName;
panel1.Controls.Add(newbotton);
newbotton.Location = new Point(x, y);
x += 150;
if (x == 760)
{
y += 50;
x = 10;
}
}
Как видите, в коде нет ничего сумасшедшего. У меня есть панель формы, и я установил автоматическую прокрутку на панели на true и автоматический размер на false. Это заставляет форму сохранять размер, а кнопки ( некоторые из них в любом случае), чтобы их отобразить вне формы, и я могу прокрутить до них.
Пока все хорошо.
Если у меня есть 100 или 200 файлов, все в порядке, если у меня 1932 файла, потребуется около 10 секунд, чтобы отобразить все кнопки.
Я прочитал следующий вопрос Сверхмедленный пользовательский элемент управления C # , и я понимаю, что подход " m использование может быть не лучшим вариантом для использования здесь.
И вот наконец вопрос: как проводник Windows справляется с этим? Если я открою эту папку в проводнике Windows, она откроется мгновенно. Какой тип управления использует проводник Windows? Или он делает это совершенно иначе, чем я.
Спасибо