01/10/2018, 01:09

Thanh ProgressBar trong WPF

Cho e hỏi 2 đoạn code sau khác nhau chỗ nào mà dòng trên chạy được dòng dưới thì ko vậy các bác

this.Dispatcher.Invoke(delegate
{
    pbMyProgressBar.Value = i;
});

{
    pbMyProgressBar.Value = (i/200)*100;
});`

Code đầy đủ

XAML:

`<Window x:Class="WpfApplication3.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid Margin="0,0,2,289">
        <ProgressBar x:Name="pbMyProgressBar" Maximum="100" Minimum="0"/>
        <Button Margin="186,102,145,-163" Click="Button_Click">
            MyButton
        </Button>
    </Grid>
</Window>

CS:

namespace WpfApplication3
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            Thread th = new Thread(WorkMethod);
            th.Start();
        }
        private void WorkMethod()
        {
            int i = 0;
            while (i < 200)
            {
                Thread.Sleep(80);
                this.Dispatcher.Invoke(delegate
                {
                    pbMyProgressBar.Value = (i/200)*100;
                });
                i++;
            }
        }
    }
}
Văn Dương viết 03:12 ngày 01/10/2018

Bởi vì i là integer. i/200 luôn <1 nên kết quả trả về luôn =0;
Hãy thử biểu thức thế này :

ProgressBar.Value = (i/200.0)*100;
Storm viết 03:09 ngày 01/10/2018

tks bác nhiều nha

Bài liên quan
0