C#程序设计.唐大仕.06.Windows窗体与控件

Windows 窗体与控件

1. 布局与事件处理

  • 基本问题:界面的布局、事件的处理

界面布局

  • 添加控件
1
2
控件.Controls.Add(...);
控件.Controls.AddRange(...);
  • 设置位置
    • 绝对布局
      • Location——以像素为单位,设置控件的 X 坐标和 Y 坐标
      • Size——以像素为单位,设置控件的宽度和高度
    • 相对布局
      • Anchor——把控件附着在窗体的一个或多个边框上
      • Dock——把控件和窗体的一个或多个边框连接起来
  • 示例
1
2
3
this.btn1.Anchor =
System.Windows.Forms.AnchorStyles.Left
| System.Windows.Forms.AnchorStyles.Top;
1
this.btn2.Dock =

事件

  • 低级事件与高级事件

    • KeyDown/KeyUp \(\to\) KeyPressed
    • TextChange
  • 事件及其注册

    • 事件/委托/事件参数

    1
    2
    btn.Click+=new EventHandler(btn_Clicked);
    void btn_Cliked(object sender, EventArgse ){...}

    • 使用匿名函数及Lambda表达式

示例

2. 常用控件

  • 控件 Control 类
    • Windows 中控件都是 System.Windows.Forms.Control 的子类
    • 实现了 IDisposable 等接口
  • 控件与组件
    • 控件:在界面中显示
    • 组件:功能与界面相关,但是不在界面中显示

常用属性

  • 外观

    • Size(大小),Width(宽度),Height(高度)
    • Location(位置),Left,Right,Top,Bottom
    • Font(字体),ForeColor(前景色),BackColor(背景色)
  • 状态

    • Visible(可见),Enabled(使能)

    • Text(文本),BackgroundImage(背景图片)

    • Tag(标记数据,类型为 object 任意类型)

常用事件

  • KeyXXXX 键盘事件
    • KeyDown、KeyUp、KeyPress
  • MouseXXX 鼠标事件
    • MouseDown、MouseUp、MouseMove、MouseEnter、MouseHover、MouseLeave
  • Click/DoubleClick 事件
  • GotFocus 事件
  • TextChange 事件

常用控件

  • 标签 Label

  • 链接标签 LinkedLabel

  • 文本框 TextBox

    • PasswordChar 可使之成为密码框
    • MultiLine 多行文本
    • ScrollBars 滚动条
    • ReadOnly 只读
  • 按钮 Button

  • 复选框 CheckBox

  • 单选框 RadioButton

    • Checked属性
    • 容器,如 GroupBox
  • 列表框 ListBox

    • 复选列表框
    • Xxxx.Items. Add(..)
  • 组合框 ComboBox

  • 数字框 NumbericUpDown

    • Value属性
  • 日期时间框 DateTimePicker

    • Value属性
    • Format 及 CustomFormat 属性 "yy-MM-dd"
  • 掩码文本框 MaskedTextBox

    • 满足一定条件的文本框
    • Mask属性
  • 进度条 ProgressBar

    • Maximum(最大值)、Minimum(最小值)
    • Step(步进值)
    • Value(当前值)
  • PictureBox 图片框

    • Image 属性
    • SizeMode 属性:拉伸、重复
  • RichTextBox 富文本框

    1
    2
    3
    .Select(start,len);
    .SelectText="...";
    .SelectionColor/Font;

  • WebBrowser 网页浏览器

    • 可以浏览网页、flash 文件、动画、多媒体等
1
Navigate("http://www.dstang.com");

容器控件

  • 流式布局面板 FlowLayoutPanel
  • 成组框 GroupBox
  • 面板 Panel
  • 分隔容器 SplitContainer
  • 选项卡 TabControl
  • 表格布局面板 TableLayoutPanel

3. 窗体

  • Form 类是 Control 类的子类
  • 特殊的属性
    • 边框、标题栏、启始位置、窗体是否最大化等

多窗体

  • 打开与关闭
    • Show()
    • ShowDialog()
      • 对话框
    • 事件:closing、closed
      • 可以设置参数 e.Cancel 取消关闭
  • 交互信息
    • Static 变量
    • 通过构造函数属性传递变量

4. 菜单、工具栏、对话框

  • Windows 应用程序的菜单(Menu)控件分为三个种类
    • MainMenu、ContextMenu、MenuItem
  • 工具栏(ToolBar)可以说是工具栏按钮(ToolBarButton)的集合控件,它将常用的按钮以图标的形式集中表现
    • 状态栏也是窗口应用程序中很重要的脚色。在状态栏上一般通知用户目前的时间、打开哪个文件等。
  • 对话框
    • OpenFileDialog
    • SaveFileDialog
    • FolderBrowserDialog
    • ColorDialog
    • FontDialog
  • SDI 及 MDI 应用程序
    • 单文档界面 (SDI)
    • 多文档界面 (MDI)应用程序
  • 示例代码

5. 用户控件

  • 用户控件:多个控件组合
  • 自动在工具箱中,可拖放到窗体上
  • 处理 Paint
    • 重载
  • 对外公开属性、方法、事件
  • 自定义控件示例

继承控件

  • 继承
  • 处理Paint
  • 为控件添加设计支持

6. 类设计器

  • VS 社区版没有类设计器的功能,需要自己安装
  • 安装
    • 工具 \(\to\) 获取工具和功能 \(\to\) vs installer \(\to\) 单个组件 \(\to\) 类设计器
  • 使用
    • 右键 \(\to\) 查看类图