Tôi có một thư mục có số lượng tệp lớn bên trong nó. Tôi muốn có thể hiển thị từng tệp của tôi dưới dạng nút. Và khi tôi bấm vào nút một cái gì đó sẽ xảy ra.làm cách nào để làm cho ứng dụng của tôi nhanh như trình khám phá cửa sổ để hiển thị các tệp
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;
}
}
Như bạn thấy không có gì điên trong mã. Tôi có một bảng điều khiển trên một biểu mẫu và tôi đã đặt tự động cuộn trên bảng điều khiển thành true và auto size thành false. Điều này làm cho biểu mẫu để duy trì kích thước và các nút (một số trong số họ anyway) để có được kết xuất khỏi biểu mẫu và tôi có thể cuộn xuống chúng.
Tất cả đều tốt cho đến nay.
Nếu tôi có 100 hoặc 200 tệp, mọi thứ đều ổn, nếu tôi có 1932 tệp cần khoảng 10 giây để hiển thị tất cả các nút.
Tôi đã đọc câu hỏi theo sau Super slow C# custom control và tôi hiểu rằng cách tiếp cận tôi đang sử dụng có thể không phải là cách tốt nhất để sử dụng tại đây.
Và bây giờ câu hỏi cuối cùng: trình duyệt Windows Explorer xử lý việc này như thế nào? Nếu tôi mở thư mục này trong Windows explorer nó sẽ mở ra ngay lập tức. Loại trình điều khiển windows explorer sử dụng là gì? Hay là nó làm theo cách hoàn toàn khác với tôi.
Cảm ơn
Tại sao không "nhanh như Chrome"? http://www.youtube.com/watch?v=4viKjxJqId0 –
Tôi nghi ngờ Windows Explorer đang sử dụng .NET. Nó có một sự tiếp cận sâu hơn vào hệ thống và đã được tối ưu hóa qua nhiều lần lặp lại của chính nó trong nhiều năm. – David
@Hamish Grubijan ... Windows "Máy tính để bàn" thám hiểm, không phải Windows "Internet" thám hiểm! (Ảnh đáng sợ bằng cách này). –