我遇到了Marquee
ProgressBar
問題。我需要執行一個方法(refreshList()
)以獲得List<string>
。然後我將這List
分配到ComboBox
,所以ComboBox
刷新與新的Items
。由於refreshList()
需要3或4秒,我想運行一個Marquee
ProgressBar
。但我不能。 ProgressBar
是好的,但是ComboBox
不會加載新的Items
。使用ProgressBar和組合框
我refreshList()
方法:
private void refreshList(List<string> list)
{
albumList.DataSource = null;
albumList.DataSource = list;
}
我有下面的代碼,它工作正常:
private void changeDirectoryToolStripMenuItem_Click(object sender, EventArgs e)
{
fbd.RootFolder = Environment.SpecialFolder.MyComputer;
folderPath = "";
if (fbd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
folderPath = fbd.SelectedPath;
refreshList(N.getList(folderPath));
}
}
但我添加了一個ProgressBar
寫了這樣的代碼:
private void changeDirectoryToolStripMenuItem_Click(object sender, EventArgs e)
{
fbd.RootFolder = Environment.SpecialFolder.MyComputer;
folderPath = "";
if (fbd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
folderPath = fbd.SelectedPath;
bgWorker.WorkerReportsProgress = true;
bgWorker.RunWorkerAsync();
}
}
而且我把refreshList()
放在doWork()
方法:
private void bgWorker_DoWork(object sender, DoWorkEventArgs e)
{
refreshList(N.getList(folderPath));
}
但不幸的是,這是行不通的。任何人都可以幫我解決這個問題嗎?提前致謝。
我可以總結一下你的問題的TL版本嗎?設置數據源'albumList.DataSource = list;'需要3-4秒,如何在分配時顯示選取框進度條?這是對的嗎? – Neolisk
您確定BackgroundWorker類已連接到DoWork事件(即您的代碼中是否有'bgWorker.DoWork + = bgWorker_DoWork;')。我也看不到你在哪裏停止並啓動'ProgressBar' – dash
在我看來,這段代碼無法編譯?在'bgWorker_DoWork'中'folderPath'是什麼。 –