分享:WPF编程体验,先启动登录==>后启动主程序的运行机制实现

xlfancy 2008-05-31 01:55:21
开发环境:
Windows Vista
Visual.Studio.2008.Team.System简体中文(从MS网站下载)

学习资料:
《Application = Code + Markup》Charles Petzold著

WPF牛吗?
绝对牛!看三点就知道:
一> Windows Presentation Foundation(WPF)是微软新一代图形系统,基于DirectX 9/10技术的图形向量渲染引擎造就前所未有的3D界面
二> 设计和代码分离
三> c/s和b/s的编程统一(你再不用为c/s编程学WindowForm,b/s编程学WebForm)

当然,这些都是专家们说的,而对我则是全新而又陌生的未知世界...

好啦,在WPF中如何实现传统的先启动登录==>后启动主程序的运行机制呢?可别小看这简单的问题哟...

下面是源代码,WPF的美妙,只有置身其中才能体验.哇!原来真的这么妙...


using System;
using System.IO;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;

namespace WpfApp
{
class myApp:Application
{

[STAThread]
public static void Main()
{
myApp app = new myApp();

//经反复测试得出的结论:这里必须用OnExplicitShutdown强调显式结束应用程序,先启动登录==〉后启动主程序的运行机制才能得以实现
app.ShutdownMode = ShutdownMode.OnExplicitShutdown;
app.Run();
}

private void win_Closed(object sender, System.EventArgs e)
{
Application.Current.Shutdown(); //显式结束应用程序
}

protected override void OnStartup(StartupEventArgs e)
{

base.OnStartup(e);

//MessageBox.Show(e.Args[2]); //命令行参数

Window winDlg = new Window1();
winDlg.ShowInTaskbar = false;
winDlg.WindowStartupLocation = WindowStartupLocation.CenterScreen;

//需要说明的是:WindowsForm中的DialogResult枚举在WPF中已经消失。害我折腾许久,最后在国外网站才找到。。。
//bool dlgResult = (bool)winDlg.ShowDialog(); //强类型转换,也行
bool? dlgResult = winDlg.ShowDialog(); //注意这里的写法,感觉怪怪。。。

if (dlgResult.Value ==true)
{
Window winMain = new Window();
this.MainWindow = winMain;
winMain.WindowStartupLocation = WindowStartupLocation.CenterScreen;
winMain.Closed += new EventHandler(win_Closed);
winMain.Title = "WPF。。。学习。。。哈哈。。。";

//给主窗体加背景图案,详见Charles Petzold名著《Application = Code + Markup》
//Uri uri = new Uri(@"E:\icons\QT_0605_11\QT_0605_11\ladybug.png");
Uri uri = new Uri(Environment.GetEnvironmentVariable("windir") + @"\Web\Wallpaper\img24.jpg");
BitmapImage bmp = new BitmapImage(uri);
Image img = new Image();
img.Stretch = Stretch.Fill;
img.Source = bmp;
winMain.Content = img;

winMain.Show();
}
else
{
Application.Current.Shutdown(); //显式结束应用程序
}
}
}
}

...全文
1188 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
奔跑的兔子 2011-09-27
  • 打赏
  • 举报
回复
WPF 里面的概念和winfrom编程有了很大的改变,一边在感叹界面的漂亮的时候,一边在感叹我们原来那些原来的句柄,窗口等等深入的操作渐渐消失。。
熊木白 2010-01-27
  • 打赏
  • 举报
回复
没有看懂啊~~是些在后台里面还是写在新建的CS文件里面啊
生财 2008-05-31
  • 打赏
  • 举报
回复
WPF是好东东啊
huang_8228 2008-05-31
  • 打赏
  • 举报
回复
WPF用起来感觉有点不爽,可能是不适应吧,他的很多使用习惯跟Winform不一样了。
wuyi8808 2008-05-31
  • 打赏
  • 举报
回复
wuyi8808 2008-05-31
  • 打赏
  • 举报
回复
wuyi8808 2008-05-31
  • 打赏
  • 举报
回复
建议开个WPF小版。
wuyi8808 2008-05-31
  • 打赏
  • 举报
回复
mark
beblue 2008-05-31
  • 打赏
  • 举报
回复
what
xyunsh 2008-05-31
  • 打赏
  • 举报
回复
sf

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧