WPF中ProgressBar 每0.1秒value+1如何实现?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF中ProgressBar 每0.1秒value+1如何实现?相关的知识,希望对你有一定的参考价值。

我想法是这样的

private void pbWroking(ProgressBar pb, int a)

for (double i = pb.Value; i < a; i++)

DateTime dt = DateTime.Now.AddSeconds(0.1);
while (DateTime.Now < dt)


pb.Value += 1;



但实际使用时,虽然运行没问题,但没有及时显示,到了100才显示……求指导

参考技术A 你这样当然不行,你这样的话程序将独占进程,只有当你pb.Value =100时,主程序才会去刷界面,所以你看到是没有及时显示。

可以开一个线程或者放入定时器中更新pb.Value。
参考技术B 你可以使用DispatcherTimer类做定时功能。
后台你可以这么写:
public MainWindow()

InitializeComponent();
DispatcherTimer timer = new DispatcherTimer();
timer.Interval = new TimeSpan(0,0,1);
timer.Tick += new EventHandler(timer_Tick);
timer.Start();


void timer_Tick(object sender, EventArgs e)

if (pbar.Value <= 100)

pbar.Value += 1;


PS:pbar为前台ProgressBar的Name本回答被提问者采纳

WPF 中ProgressBar的Value属性的值在变化 但进度条不动是怎么回事啊?

UI:
<ProgressBar HorizontalAlignment="Left" Height="11" Margin="10,414,0,0"
VerticalAlignment="Top" Width="559" Maximum="100" Minimum="0"
Name="ProgressBar" Value="Binding ValueMum, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged"
RenderTransformOrigin="0.84,2.2">
ShadeViewModel:
private static int valueMum;
public static int ValueMum

get
return valueMum;
set

if (valueMum != value)

valueMum = value;
ViewModelBase VMB = new ViewModelBase();
VMB.OnPropertyChanged("ValueMum");
// MessageBox.Show("下载进度:" + Maximum);



public void OnValueMum(int text)

ShadeViewModel.ValueMum = text;

参考技术A 只是ProgressBar出问题还是其他类型的绑定都出问题?追问

只是ProgressBar 的Value出问题
如图 有值 但 UI 的进度条没效果

追答

加两个按钮,手动写死两个后台值,然后逐一点击看看究竟界面变不变。

本回答被提问者采纳

以上是关于WPF中ProgressBar 每0.1秒value+1如何实现?的主要内容,如果未能解决你的问题,请参考以下文章

c#中 progressbar 进度条控件怎么开始???

WPF怎么获取mp3的自然时间然后赋值给progressbar

在wpf中,怎样用progressbar

python进度条Progressbar 实例

python进度条Progressbar 实例

WPF 中 ProgressBar 上的文本