zoukankan      html  css  js  c++  java
  • C#高级编程(第六版)学习:第三十一章:Windows窗体

    第三十一章 Windows窗体

    1. 创建Windows窗体应用程序

    在文本编辑器中输入:

    /*

    * form.cs

    * a simple windows form

    * */

    using System;

    using System.Windows.Forms;

     

    namespace NotepadForms

    {

    public class MyForm:System.Windows.Forms.Form

    {

    public MyForm()

    {

    }

     

    [STAThread]

    static void Main()

    {

    Application.Run(new MyForm());

    }

    }

    }

    使用命令csc /target:winexe form.cs进行编译,生成form.exe得到一个没有标题的空白小窗体。

     

    Main函数是客户应用程序的默认入口。在大型应用程序中,Main方法不位于窗体中,而是位于类中,负责完成需要的启动。

    [STAThread],它把COM线程模型设置为单线程单元(Single-Threaded Apartment, STA)。COM交互操作需要STA线程模型,默认为添加到Windows窗体项目中。

    Application.Run()方法负责启动标准的应用程序消息循环。它有三个重载版本:第一个版本不带参数,第二个重载版本把ApplicationContext对象作为其参数,第三个重载版本将窗体对象作为参数。

     

    Application类中相关的函数和属性

    方法/属性

    说明

    CommonAppDataPath

    对应用程序的所有用户都通用的数据路径。一半是BasePathCompanyNameProductNameVersion

    其中,公司名一般为命名空间的名字,产品名为程序集信息中的产品名。

    Basepath为UserDirApplicationData

    ExecutablePath

    启动应用程序的可执行文件的路径和文件名

    LocalUserAppDataPath

    类似于CommonAppDataPath,支持漫游

    MessageLoop

    如果当前线程存在消息循环,返回true,否则,false

    StartupPath

    类似于ExecutablePath,但是不包含文件名,仅包含路径

    AddMessageFilter

    用于预处理消息。在基于IMessagerFilter的对象上执行,消息可以从消息循环中过滤出来,或者在消息发送到消息循环中之前进行特殊处理

    DoEvents

    允许处理队列中的消息

    EnableVisualStyles

    允许对应用程序的各种可视化元素使用XP可视化样式。有两个重载版本接受清单消息。一个接受清单流,一个接收清单所在的完整名称和路径。

    Exit和ExitThread

    Exit结束所有当前运行的消息循环,退出应用程序。ExitThread只结束消息循环,关闭当前线程上的所有窗口。

     

    InitializeComponent初始化了添加到窗体上的所有控件,还初始化了窗体的属性。

    如果在InitializeComponent中修改了任意类型的代码,下次在设计器中进行修改时,这些改动就会消失(VS2008)。每次在设计器中进行修改后,InitializeComponent就会重新生成。InitializeComponent负责实例化控件,在InitializeComponent之前所有引用控件的调用都会失败。

    SuspendLayout:临时挂起控件第一次初始化时发生的布局事件。

    ResumeLayout把事件重置为正常状态。

     

    1. Control类

    Control类位于System.Windows.Forms命名空间中,它是每个控件和窗体的基类。Control类执行核心功能,创建用户所见的界面。派生自System.ComponentModel.Component类。

     

    大小和位置

    由Height,Width,Top,Bottom,Left,Right以及辅助的Size和Location确定。Location为一个Point结构。

    Bounds属性返回一个Rectangle对象,表示一个控件区域。包含滚动条和标题栏。Rectangle位于System.Drawing命名空间。

    ClientSize属性是一个Size结构,表示客户区,不包含滚动条和标题栏。

    PointToScreen和ScreenToClient分别是客户区转屏幕坐标和屏幕坐标转客户区。RectangleToScreen和RectangleToClient具有相似的功能。

    Dock属性确定子控件停放在父控件的哪条边上。DockStyle枚举值用做其属性值,Top,Bottom,Right,Left,Fill和None。

    Anchor属性把子控件的一条边与父控件的一条边对齐。将到该边的距离设定为固定值。

    Anchor属性采用AnchorStyles枚举的值,有Top,Bottom,Right,Left,None。

     

    用户交互操作

    常见的事件有Click,DoubleClick,KeyDown,KeyPress,Validaing,和Paint

     

    1. 标准控件和组件

    Button控件

    派生于ButtonBase类

    表示简单的命令按钮

    可以在窗体的AcceptDefault和CancelDefault中设置默认的确定和取消按钮。

     

    CheckBox控件

    派生于ButtonBase类。

    复选框

    如果ThreeState设为true,复选框有三种状态,用CheckState属性表示

    Checked:选中

    Unchecked:没选中

    Indeterminate:复选框置灰。

    Checked属性只有true或者false

     

    1. 窗体

    Form类派生于Control类

    窗口的实例化和释放过程

    • 构造函数
    • Load
    • Activated
    • Closing
    • Closed
    • Deactivate

    前三个事件在初始化时发生

    Load在对象实例化,窗体可见前发生。

    引发Load是,窗体以存在,但不可见。构造函数执行过程中,窗体还不存在。

    如果在构造函数中将Visible属性设为true或者调用了Show方法。就会立即引发Load事件,这也会使窗体可见。

    关闭窗体时,Closing事件在正在关闭时发生,将Cancel属性设置为true,就可以取消关闭

    Closed在窗体关闭后发生。

     

    与窗体启动相关的属性有StartPosition,ShowInBarTaskBar,TopMost。

     

    Show和ShowDialog显示窗体

    Show:执行后窗体对用户可见,后面的代码继续执行

    ShowDialog:窗体关闭后代码才执行。返回DialogResult值。

  • 相关阅读:
    linux的性能优化
    linux日志分析
    rsyslog日志服务的配置文件分析
    Unix 入门
    Linux常用快捷键
    Linux常用命令大全
    ueditor 实现ctrl+v粘贴图片并上传、word粘贴带图片
    本地图文直接复制到WordPress编辑器中
    本地图文直接复制到Blog编辑器中
    http大文件上传(切片)
  • 原文地址:https://www.cnblogs.com/xyb930826/p/5295534.html
Copyright © 2011-2022 走看看