zoukankan      html  css  js  c++  java
  • WPF程序设计 :第一章 应用程序和窗口(The Application and the Window)

    The Application and the Window

       Part One 应用程序和窗口

       

      1.  注意的是,我们这里直接书写C#代码(console程序),即文字模式编写程序。当然你现在完全可以借助Visual Studio 2008 IDE编写,更加快速,初学者,建议你使用前者学习WPF 应用程序开发。

     

        对于当前一些学习者来说,肯能还在使用Vs 2005,那么你可以这样创建应用程序:

          1. "File"菜单,选取"New Project";

          2.在"New Project" 对话框中,选取"Visual C#" - "Windows" - "Empty Project"(空项目)。指定存放目录和工程名后,(取消“Create Directory For

             Solution”),然后按下"OK".

        这样就可以创建一个空的Project了。

     

       2. 为Windows Presentation Foundation(WPF)开发应用程序,需要构建Application对象和Window对象。下面就是一个简单的WPF程序:

     

    //-----------------------------------------
    // SayHello.cs (c) 2008 by Jack Dong
    //-----------------------------------------
    using System;
    using System.Windows;

    namespace JackDong.SayHello
    {
        
    class SayHello
        
    {
           [STAThread] 
    // 指示应用程序的 COM 线程模型是单线程单元(STA)
            public static void Main()
            
    {
                Window win 
    = new Window();
                win.Title 
    = "SayHello";
                win.Show();

                Application app 
    = new Application();
                app.Run();
            }

        }

    }

    (1)利用using编译指示符(directive)将System.Windows命名空间加入工程,这个命名空间包含了所有的基本WPF类别、结构(struct)、接口(interface)、委托(delegate)以及枚举类型(enum),其中包括Application和Windows两个类。

    (2)其他的WPF命名空间均以System.Window开头

      如:System.Windows.Controls、System.Windows.Input、System.Windows.Media。只有System.Windows.Forms是个例外,他主要是Windows.Forms的命名空间。

    (3)除了System.Windows.Forms.Integration这个命名空间里的类是用来集成Windows.Forms 和 WPF 程序的,其他所有以 System.Windows

    .Forms 和 WPF程序的,其他所有以System.Windows.Forms 开头的命名空间,都属于传统的Windows.Forms命名空间。

    (4)通过上面方式创建的Project,你需要在"Solution Explorer" 中,"References"栏必须包含"PresentationCore"、"PresentationFramework"、"System"

    以及"WindowsBase"。

         运行上面的代码,Main 一开始创建一个Window类的对象,这个类用来创建标准应用程序窗口。Title property 是显示在窗口标题栏的文字,而Show方法将窗口显示在屏幕上。

       这里最重要的步骤是,调用Application对象的Run方法。在传统的Windows编程的思维中,这么做的目的是建立一个消息循环,让应用程序可以接受用户键盘或是鼠标输入。

       在关闭SayHello创建的窗口时,你会发现一个console窗口也在运行。这是源自编译选项的设定,你可以在工程的property中,修改此编译选项。用鼠标点击工程名,并从弹出菜单中选择“Property”。现在你就可以查看工程的各种设定了,当然也可以改变设定。特别注意的就是"Output Type"(输出类型)被设定为"Console Application"(控制台应用程序),显然,这样的设定不会阻碍用console程序来建立GUI窗口。将这个设为"Windows Application",程序同样会顺利执行,而这次将不再出现console的窗口了。我认为在开发阶段,console窗口其实相当有用。程序运行时,我们可以用它来显示一些文本信息,以便调试。如果程序的BUG太多,设置无法将GUI窗口显示出来,或是进入无限循环,这个时候,只要在console窗口键入Ctrl+C,就可以轻易地关闭程序。这些都是console窗口的附带好处。

    3. 在一个程序中,只能创建一个Application对象,对程序的其他地方来说,此Application对象的作用如同固定的锚一般。你在屏幕上是看不到Application对象的,但是可以看到Window对象。Window对象出现在屏幕上,这些是正常的Windows系统窗口,具有的标题属性(Titile property)的值会变成标题栏上的文字,系统菜单在标题栏的左边,最大化、最小化和关闭窗口图标则在右边。

    此窗口有一个可以调整窗口大小的边框,窗口中很大的面积被一个客户区(client area)所占据。

         需要注意的是,Run的调用必须保留在最后。Run方法一旦被调用,就不会返回,知道窗口被关闭为止。Run返回后,Main方法就借宿,Windows操作系统会做一些清除工作;程序调用Run方法之后,才真正开始运行,因为只有调用Run之后,Window对象才能响应用户的输入。当用户关闭窗口时,Run方法就会返回,程序也就准备结束。

    这样程序运行时几乎所有的时间都花在Run内,在初始化之后,其实程序所作的事情几乎都是在响应各种事件,他们通常是关于鼠标、键盘等的事件。

    1. MouseDown事件,

    (1)事件处理器

        须符合MouseButtonEventHandler委托,也就是说,第一个参数类型是object,第二个类型是MouseButtonEventArgs,给类定义在System.Windows.Input命名空间中。

    (2)使用

        当客户在窗口的客户区中按下鼠标,该事件就会发生

  • 相关阅读:
    脚手架自建从开始到发布
    零散点总结
    2019.3.7 chrome72下载图片卡死问题
    2019.2.18 一九年的新篇章
    2018.10.12 布局终结
    2018.7.23 放大缩小菜单
    2018.7.19 横向收缩菜单动画
    2018.6.8 openlayers.js学习(汇总)
    Elasticsearch 排序
    easyui tree树节点上移下移 选中节点加背景色
  • 原文地址:https://www.cnblogs.com/Dlonghow/p/1246786.html
Copyright © 2011-2022 走看看