最近时间紧张,上一篇关于cef(Chromium Embedded Framework)的wpf版本问题解决会尽快完成,而且还会附带下载链接!
MainWindow加载事件导致窗体白屏,因为初始化单线程,我在MainWindow里加了个遮盖层,当数据加载完成后遮盖消失!!
<Window x:Class="WpfApplication1.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>
<Button Height="50" Background="Gray" Margin="105,39,127,172" Content="加载完成!!!" ></Button>
<Grid Background="Gray" x:Name="aaa" >
<Label Content="0" Width="200" Height="50" Name="txtLab" Margin="152,64,151,197" />
<ProgressBar Height="20" x:Name="progressbar1" Width="200" Margin="152,120,151,170"></ProgressBar>
</Grid>
</Grid>
</Window>
namespace WpfApplication1
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
System.ComponentModel.BackgroundWorker backgroundWorker1;
public MainWindow()
{
InitializeComponent();
backgroundWorker1 = new System.ComponentModel.BackgroundWorker();
progressbar1.Maximum = 10;
backgroundWorker1.WorkerReportsProgress = true;
backgroundWorker1.WorkerSupportsCancellation = true;//申请后台程序停止,注意本方法使用前,需要将bgw的WorkerSupportsCancellation 值设为true,否则将不起作用.
backgroundWorker1.ProgressChanged += backgroundWorker1_ProgressChanged;
backgroundWorker1.RunWorkerCompleted += backgroundWorker1_RunWorkerCompleted;
backgroundWorker1.DoWork += backgroundWorker1_DoWork;
backgroundWorker1.RunWorkerAsync();
}
void backgroundWorker1_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
{
DoWork(backgroundWorker1);
}
private void DoWork(System.ComponentModel.BackgroundWorker bk)
{
for (int i = 0; i <= 10; i++)
{
bk.ReportProgress(i, string.Format("数据正在加载:{0} %", i));
Thread.Sleep(3000);
}
}
void backgroundWorker1_RunWorkerCompleted(object sender, System.ComponentModel.RunWorkerCompletedEventArgs e)
{
if (e.Error == null)
{
this.Dispatcher.BeginInvoke((Action)delegate()
{
aaa.Visibility = Visibility.Hidden;
});
}
}
void backgroundWorker1_ProgressChanged(object sender, System.ComponentModel.ProgressChangedEventArgs e)
{
progressbar1.Value = e.ProgressPercentage;
txtLab.Content = e.UserState.ToString();
}
}
}