代替Window对象调用Show的一个途径是,你可以将Window对象作为一个参数传递给Run方法:
1app.Run(win);
在这种情况下:Run方法自己承担起为Window对象调用Show方法的责任。
一个应用程序直到调用Run方法时才真正开始运行起来。只有这样Window对象才能响应用户的输入。当用户关闭窗体和Run方法返回时,程序才准备退出。Thus, the program spends almost all of its existence deep within the Run call. But how can the program do anything if it is spending all its time in Run?
在初始化之后,实质上程序中所有的事情都是为了响应事件。这些事件有用户的键盘、鼠标或者触摸屏输入。UIElement类定义了一系列键盘、鼠标和触摸屏相关的事件。Window类继承了所有的这些事件。其中有一个事件叫做MouseDown。当用户在客户区单击鼠标时会引发一个MouseDown事件。
下面的程序安装了一个事件处理器,为了处理MouseDown事件:
1HandleAnEvent.cs
2
3
4//----------------------------------------------
5// HandleAnEvent.cs (c) 2006 by Charles Petzold
6//----------------------------------------------
7using System;
8using System.Windows;
9using System.Windows.Input;
10
11namespace Petzold.HandleAnEvent
12{
13 class HandleAnEvent
14 {
15 [STAThread]
16 public static void Main()
17 {
18 Application app = new Application();
19
20 Window win = new Window();
21 win.Title = \"Handle An Event\"; [Page]
22 win.MouseDown += WindowOnMouseDown;
23
24 app.Run(win);
25 }
26 static void WindowOnMouseDown(object
27 sender, MouseButtonEventArgs args)
28 {
29 Window win = sender as Window;
30 string strMessage =
31 string.Format(\"Window clicked with
32 {0} button at point ({1})\",
33 args.ChangedButton,
34 args.GetPosition(win));
35 MessageBox.Show(strMessage, win.Title);
36 }
37 }
38}
39
40
我喜