首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

请教怎么设置wpf的启动类

2012-09-09 
请问如何设置wpf的启动类?请问wpf如何让程序从一个类中的函数启动,然后再通过show()方法弹出制定的窗口呢?

请问如何设置wpf的启动类?
请问wpf如何让程序从一个类中的函数启动,然后再通过show()方法弹出制定的窗口呢?就是不指定启动窗口,而是在程序中判断哪个是要启动窗口,然后启动。

[解决办法]

C# code
        [STAThread]        static void Main()         {            Window1 window = new Window1();            window.Title = "xx";            window.Content = "Content";            Application myAp = new Application();            myAp.Run(window);        }
[解决办法]
App.xaml还有其他用途(如定义全部资源),推荐的方法上,仅将App.xaml中的StartupUrl去掉,然后处理StartUp事件,在这里动态显示需要的窗口
C# code
        private void Application_Startup(object sender, StartupEventArgs e)        {                new Window1().ShowDialog();            Shutdown();        }
[解决办法]
wpf默认的app的ShutdownMode="OnMainWindowClose",刚开始,app的Starturi指向的是主窗口,如果它关闭,应用程序就关闭了,因此你需要在主窗口关闭前打开第二个窗口,然后将第二个窗口设置为主窗口,再关闭第一个窗口

更方便的方法是设置<Application ShutdownMode="OnExplicitShutdown".../>,这样需要自己控制应用程序的关闭,你关闭窗体不会影响到应用程序的关闭,但此时手动需要调用Application.Shutdown()来关闭应用程序
[解决办法]
App.xaml.cs文件中添加如下代码,App.xaml中去掉StartupUri...搞定!!!
public partial class App : Application
{
Mutex mutex;
public App()
{

}

protected override void OnStartup(StartupEventArgs e)
{
try
{
base.OnStartup(e);
string mutexName = Assembly.GetEntryAssembly().FullName;
bool CreateNew;
mutex = new Mutex(true,mutexName,out CreateNew);
if(!CreateNew)
this.Shutdown();
else
{
MainWindow win = new MainWindow();
win.Show();
}
}
catch(Exception ex)
{
MessageBox.Show(App.Current.MainWindow as MainWindow,ex.Message,"系统错误",MessageBoxButton.OK,MessageBoxImage.Error);
App.Current.Shutdown();
}
}
}

热点排行