親フォームが長い操作を実行しているときにダイアログとして表示したいフォームにProgressBarがあります。ダイアログフォームのWPF更新プログレスバー
ProgressWindowは単純です:
コンストラクタは、最大値を取り込んで、私はインクリメント方法があります。私はインスタンスを作成し、親に
public ProgressWindow(int count)
{
InitializeComponent();
fileProgressBar.Maximum = count;
}
public void IncremntProgress()
{
fileProgressBar.Value++;
}
:
ProgressWindow progressWindow = new ProgressWindow(listOfFiles.Count);
progressWindow.Show();
私は、大規模な操作を実行すると、私はプログレスバーを更新する:
foreach (var file in listOfFiles)
{
....
progressWindow.IncremntProgress();
}
progressWindow.Close();
これは動作しますが、私が好きなフォームがダイアログになり、進行状況バーが正しく更新されません。
ダイアログウィンドウで進捗バーを更新する方法はありますか?
XAMLの 'ProgressBar'最小値と最大値はありますか? ' ' –
Smartis
UIスレッドで大規模な操作を実行すると、 'foreach'の全期間、UIに描画/更新させません何でも3)別のスレッドで作成したウィンドウを使用して進行状況を表示します(UIに変更が多すぎるとよい場合もあります)。3) 'Application.DoEvents()'を呼び出します。定期的にループの内側にあります(推奨されません)。 – Sinatr
はい、私は最小値と最大値を設定しました – Sun