为什么我在AppDomain中运行表单时会丢失视觉样式?

时间:2014-01-14 13:25:05

标签: c# .net

我加载了两个表单,一个是通过新的Windows表单应用程序的传统方式(即Application.Run(new Form1())),另一个是通过AppDomain使用以下代码:

AppDomain dom = AppDomain.CreateDomain("bob", AppDomain.CurrentDomain.Evidence, AppDomain.CurrentDomain.SetupInformation);
dom.SetPrincipalPolicy(System.Security.Principal.PrincipalPolicy.WindowsPrincipal);
Test t = (Test)dom.CreateInstanceAndUnwrap(System.Reflection.Assembly.GetExecutingAssembly().FullName, typeof(Test).FullName);
t.Run();

Test中的代码:

public class Test : MarshalByRefObject
{
    public void Run()
    {
        Form2 f = new Form2();
        f.Show();
    }
}

我看过网上但找不到窗口中的视觉样式丢失的原因。例如,如果我向每个表单添加一个按钮,则通过AppDomain加载的表单将不具有视觉样式。它会有一个普通的XP之前的感觉。

任何人都可以建议在通过AppDomain加载控件时如何保留视觉样式。请注意,这只是一个测试,前进将用于插件。

1 个答案:

答案 0 :(得分:3)

Application.EnableVisualStyles()适用于 AppDomain 。如果您从其他AppDomain打开表单而未在其中调用 EnableVisualStyles ,则这些表单将不会应用视觉样式。