WP8控件进度条(ProgressBar)的使用
--前台代码
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="0,0,24,0">
<ProgressBar x:Name="ProgressBar1" HorizontalAlignment="Left" Height="71" Margin="42,244,0,0" VerticalAlignment="Top" Width="308" Value="50"/>
<TextBlock HorizontalAlignment="Left" Height="38" Margin="42,10,0,0" TextWrapping="Wrap" Text="请选择类型" VerticalAlignment="Top" Width="330"/>
<RadioButton x:Name="rad1" Content="Determinate类型" HorizontalAlignment="Left" Margin="42,53,0,0" VerticalAlignment="Top" Width="330" IsChecked="True"/>
<RadioButton x:Name="rad2" Content="Indeterminate类型" HorizontalAlignment="Left" Margin="42,146,0,0" VerticalAlignment="Top" Width="330"/>
<Button x:Name="begin" Content="启动" HorizontalAlignment="Left" Margin="42,320,0,0" VerticalAlignment="Top" Width="295"/>
<Button x:Name="canel" Content="取消" HorizontalAlignment="Left" Margin="42,392,0,0" VerticalAlignment="Top" Width="295"/>
</Grid>
--后台代码
using Microsoft.Phone.Controls;
using Microsoft.Phone.Shell;
using PhoneFirst.Resources;
using System.ComponentModel; namespace PhoneFirst
{
public partial class MainPage : PhoneApplicationPage
{
private BackgroundWorker backgroundworker;
// 构造函数
public MainPage()
{ InitializeComponent();
ProgressBar1.Visibility = Visibility.Collapsed;
begin.Click += begin_Click;
canel.Click += canel_Click; } void canel_Click(object sender, RoutedEventArgs e)
{
ProgressBar1.Visibility = Visibility.Collapsed;
} void begin_Click(object sender, RoutedEventArgs e)
{
ProgressBar1.Visibility = Visibility.Visible;
if (rad1.IsChecked == true)
{
ProgressBar1.IsIndeterminate = false;
backgroundworker = new BackgroundWorker();//创建一个后台处理类的对象
//调用RunWorkerAsync后台操作时引发此事件,即后台要处理的事情写在这个事件里面
backgroundworker.DoWork += backgroundworker_DoWork;
//当后台操作完成事件
backgroundworker.RunWorkerCompleted += backgroundworker_RunWorkerCompleted;
//当处理进度(ReportProgress)被激活后,进度的改变将触发ProgressChanged事件
backgroundworker.ProgressChanged += backgroundworker_ProgressChanged;
//设置为可报告进度情况的后台处理
backgroundworker.WorkerReportsProgress = true;
backgroundworker.RunWorkerAsync();
}
else
{
ProgressBar1.Value = 0;
ProgressBar1.IsIndeterminate = true;
}
}
//进度改变处理
void backgroundworker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
Dispatcher.BeginInvoke(() => {
//把进度改变的值赋给ProgressBar1进度条的值
ProgressBar1.Value = e.ProgressPercentage;
});
}
//后台操作完成
void backgroundworker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
Dispatcher.BeginInvoke(() => {
//隐藏进度条;
ProgressBar1.Visibility = Visibility.Collapsed;
});
}
//后台操作处理
void backgroundworker_DoWork(object sender, DoWorkEventArgs e)
{
for (int i = 0; i < 100; i++)
{
i += 10;
//赋值当前进度的值,
backgroundworker.ReportProgress(i);
//为了能看到进度条的效果。这里用进程暂停了1秒
System.Threading.Thread.Sleep(1000);
}
} public ResourceDictionary Resources { get; set; } } }
最新文章
- Mybatis批量删除
- Git的checkout, reset, revert
- 原生js模拟锚点,实现点击后,内容定位到本页的对应位置
- 代理 XP”组件已作为此服务器安全配置的一部分被关闭。系统管理员可以使用 sp_configure 来启用“代理 XP”。
- Java程序设计的DOS命令基础
- SGU 105 div.3 找规律
- c#扩展方法的理解(一:初识)
- dede数据库文件导入失败的可能原因是数据表前缀不同,这里的失败指的是mysql添加了数据,但后台不显示
- Android 所有版本区别总结(转)
- IE6兼容inline-block的方法
- TreeView点击父节点不刷新展开子节点
- php中json对象数据的输出转化
- require和require_once的区别
- 大数据学习之Linux基础01
- Linux源码安装软件
- FZU 2254 英语考试
- Eclipse ADT中的logcat不显示解决方法
- Linux安装配置NFS教程(CentOS 6.5)
- [Spring学习笔记 6 ] Spring JDBC 详解
- 牛腩学Kotlin做Android应用