我要做的是新建一个线程 用来显示对话框FormProgress。主线程继续处理数据,处理的进度实时显示到对话框。这个功能我已经可以实现,但是新线程中显示的对话框的皮肤无法改成我想设置的皮肤,求指导。
主程序对话框风格
新线程对话框
新线程对话框要达到的效果
上面用的对话框是DevExpress.XtraEditors.XtraForm
参考How to change the default LookAndFeel for the entire application?,按类似下面的设置,看看是否能实现
DevExpress.UserSkins.BonusSkins.Register();
DefaultLookAndFeel defaultLF = new DefaultLookAndFeel();
defaultLF.LookAndFeel.UseDefaultLookAndFeel = true;
private void FormProgress_Load(object sender, EventArgs e)
{
simpleButton1.Enabled = false;
simpleButton2.Enabled = true;
//this.DialogResult = System.Windows.Forms.DialogResult.Ignore ;
DevExpress.UserSkins.BonusSkins.Register();
DevExpress.LookAndFeel.UserLookAndFeel.Default.UseWindowsXPTheme = false;
DevExpress.LookAndFeel.UserLookAndFeel.Default.UseDefaultLookAndFeel = true;
DevExpress.LookAndFeel.UserLookAndFeel.Default.SkinName = "myskin_new";
DevExpress.Skins.SkinManager.EnableMdiFormSkins();
DevExpress.Skins.SkinManager.EnableFormSkins();
}
上述代码在主程序 Application.Run(new FormProgress());直接显示是有效果的。
但是用线程new Thead(new ThreadStart(ShowProgress)).Start(); 设置的皮肤就没有效果。
private void ShowProgress()
{
Formprogress.label1.Text = "";
Formprogress.label2.Text = "";
Formprogress.StartPosition = FormStartPosition.CenterScreen;
Formprogress.ShowDialog();
}
你把Progress窗体的LookAndFeel设置好就可以了。