第三章 菜单

1,控件和容器

所有的Windows Forms控件都是从System.Windows.Forms.Control类继承的,相关类的层次结构如下图所示:

MarshalByRefObject类表示必须通过引用进行列集(marshale)的对象。列集表示从一个上下文环境中传递一个数据项使它可以在另一个上下文环境中被理解的一种机制。只在创建它们的进程中有效,必须通过引用才能在进程外使用。

Component类为通过引用进行列集的对象提供了IComponent接口。组件是可以在容器中存在的对象,并且可以通过Dispose方法清理系统资源。

ButtonBase是所有按钮的基类,包括单选和复选按钮。

 

容器类:可以包含其他控件的控件称为容器控件。Control类本身提供了对容器的支持,例如Controls属性和GetNextControl方法。

 

Form类的层次结构

其中ScrollableControl提供了包含对象自滚动的功能。

ContainerControl类表示提供焦点管理的控件,提供了它所包含的控件集合的逻辑边界。这个类追踪容器中的活动控件,还负责管理容器中各个控件的Tab顺序。

 

Control类的常用属性、方法和事件

公共属性

AllowDrop

是否允许拖放

Anchor

锚定设置

BackColor

背景色

ContextMenuStrip

上下文菜单

Controls

控件所包含的控件

ClientRectangle

获取客户区域,DisplayRectangle获取控件的显示区域。

Cursor

鼠标出现在这个控件上所呈现的光标

Enabled

是否启用这个控件

Location

控件的位置

Parent

控件的父控件

TabIndex

Tab索引

TabStop

是否启动Tab

Text

控件关联的文本

Visible

是否可见

公共方法

BringToFront

使这个控件出现在Z序的最前边

GetNextControl

按照Tab顺序返回上一个或下一个控件

Invalidate

强制这个控件的全部或部分重绘

PointToClient

把一个屏幕位置转换为客户坐标

公共事件

Click

点击时发生

KeyPress

具有焦点且按下按钮时发生

MouseUp

鼠标光标位于控件内部时,释放一个按钮时发生

Paint

全部或部分重绘时发生

 

2,菜单

菜单一般分为传统菜单(主菜单或者锚定菜单)和上下文菜单(弹出菜单或者快捷菜单)。.Net中的上下文菜单一般与控件相关联。

ToolStrip:可滚动控件

MenuStrip:菜单

StatusStrip:状态栏

ContextMenuStrip:弹出式菜单

 

ToolStripMenuItem表示一个菜单项。MenuStrip和ContextMenuStrip对象是简单的容器。

ToolStripDropDownItem:

公共属性

Checked

是否在右边显示选中标记

CheckState

三态

Enabled

是否启用

Overflow

如何与重合的按钮进行交互,基于ToolStripItemOverflow枚举

ShortcutKeyDisplay_String

快捷键显示的字符串,若为空,显示为实际值。

ShortcutKeys

快捷键,基于Keys的枚举

ShowShortcutKeys

显示菜单是是否显示ShortcutKeys设置

公共事件

CheckedChanged

Checked属性变换

CheckStateChanged

CheckState状态变化

 

namespace chapter_3

{

partial class Form1

{

/// <summary>

/// 必需的设计器变量。

/// </summary>

private System.ComponentModel.IContainer components = null;

 

/// <summary>

/// 清理所有正在使用的资源。

/// </summary>

/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>

protected override void Dispose(bool disposing)

{

if (disposing && (components != null))

{

components.Dispose();

}

base.Dispose(disposing);

}

 

#region Windows 窗体设计器生成的代码

 

/// <summary>

/// 设计器支持所需的方法 - 不要

/// 使用代码编辑器修改此方法的内容。

/// </summary>

private void InitializeComponent()

{

this.menuStrip1 = new System.Windows.Forms.MenuStrip();

this.fileFToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();

this.loadLToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();

this.ExitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();

this.menuStrip1.SuspendLayout();

this.SuspendLayout();

//

// menuStrip1

//

this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {

this.fileFToolStripMenuItem});

this.menuStrip1.Location = new System.Drawing.Point(0, 0);

this.menuStrip1.Name = "menuStrip1";

this.menuStrip1.Size = new System.Drawing.Size(284, 25);

this.menuStrip1.TabIndex = 0;

this.menuStrip1.Text = "menuStrip1";

//

// fileFToolStripMenuItem

//

this.fileFToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {

this.loadLToolStripMenuItem,

this.ExitToolStripMenuItem});

 

this.fileFToolStripMenuItem.Name = "fileFToolStripMenuItem";

this.fileFToolStripMenuItem.Size = new System.Drawing.Size(53, 21);

this.fileFToolStripMenuItem.Text = "File(&F)";

this.fileFToolStripMenuItem.Click += new System.EventHandler(this.fileFToolStripMenuItem_Click);

//

// loadLToolStripMenuItem

//

this.loadLToolStripMenuItem.Name = "loadLToolStripMenuItem";

this.loadLToolStripMenuItem.ShortcutKeyDisplayString = "";

this.loadLToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.L)));

this.loadLToolStripMenuItem.Size = new System.Drawing.Size(162, 22);

this.loadLToolStripMenuItem.Text = "Load(&L)";

this.loadLToolStripMenuItem.Click += new System.EventHandler(this.loadLToolStripMenuItem_Click);

//

// ExitToolStripMenuItem

//

this.ExitToolStripMenuItem.Name = "ExitToolStripMenuItem";

this.ExitToolStripMenuItem.Size = new System.Drawing.Size(162, 22);

this.ExitToolStripMenuItem.Text = "Exit(&Q)";

this.ExitToolStripMenuItem.Click += new System.EventHandler(this.ExitToolStripMenuItem_Click);

//

// Form1

//

this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);

this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;

this.ClientSize = new System.Drawing.Size(284, 261);

this.Controls.Add(this.menuStrip1);

this.MainMenuStrip = this.menuStrip1;

this.Name = "Form1";

this.Text = "Form1";

this.menuStrip1.ResumeLayout(false);

this.menuStrip1.PerformLayout();

this.ResumeLayout(false);

this.PerformLayout();

 

}

 

#endregion

 

private System.Windows.Forms.MenuStrip menuStrip1;

private System.Windows.Forms.ToolStripMenuItem fileFToolStripMenuItem;

private System.Windows.Forms.ToolStripMenuItem loadLToolStripMenuItem;

private System.Windows.Forms.ToolStripMenuItem ExitToolStripMenuItem;

}

}

 

 

在顶层菜单中添加子菜单项,先创建ToolStripItem数组,然后用DropDownItem属性的AddRange方法添加到菜单中去。

 

ToolStripItem表示ToolStrip的一个项

公共属性

AllowDrop

重新排序和拖放操作是默认行为(false)还是自定义行为(true)

Alignment

与包含它的工具条起始还是末尾对齐

Anchor

如何粘附到容器的各个边缘

BackColor

背景色

ClientRectangle

内部绘制区域

DisplayStyle

定义是否为这个相显示文本,为ToolStripItemDisplayStyle枚举

Enabled

是否对用户交互做出响应

Image

所显示的图像

MergeAction

如何合并到一个目标工具条

Parent

父控件

Text

项相关联的文本

ToolTipText

提示文本,AutoToolTip设为true,使用Text设置提示文本

Visible

该项与子项是否可见

公共方法

Invalidate

全部或部分重绘

PerformClick

调用Click事件

公共事件

Click

点击

DragDrop

一个拖放操作完成时

MouseUp

位于项边界之内释放鼠标

Paint

绘制

 

ToolStripButton:显示一个按钮

ToolStripControlHost:几乎可以容纳所有的Forms控件。

ToolStripDropDownItem:下拉式菜单,ToolStripMenuItem是其子类。

 

Windows Forms编程实战学习:第三章 菜单的更多相关文章

  1. Windows Forms编程实战学习:第一章 初识Windows Forms

    初识Windows Forms 1,用C#编程 using System.Windows.Forms;   [assembly: System.Reflection.AssemblyVersion(& ...

  2. Windows Forms编程实战学习:第二章 欢迎使用Visual Studio

    第二章 欢迎使用Visual Studio 1,AssemblyInfo文件 包含程序集的属性,向应用程序添加元数据 [assembly:<attribute>(<setting&g ...

  3. 《Java并发编程实战》第三章 对象的共享 读书笔记

    一.可见性 什么是可见性? Java线程安全须要防止某个线程正在使用对象状态而还有一个线程在同一时候改动该状态,并且须要确保当一个线程改动了对象的状态后,其它线程能够看到发生的状态变化. 后者就是可见 ...

  4. java并发编程实战:第三章----对象的共享

    我们不仅仅希望防止某个线程使用某个状态时,另一个线程在修改它:我们还希望某个线程修改了某个状态后,其他线程能够看到状态的变化. 一.可见性 重排序:在没有同步的情况下,编译器.处理器可能对代码的执行顺 ...

  5. 程序员编程艺术:第三章续、Top K算法问题的实现

    程序员编程艺术:第三章续.Top K算法问题的实现 作者:July,zhouzhenren,yansha.     致谢:微软100题实现组,狂想曲创作组.     时间:2011年05月08日    ...

  6. 《Linux命令行与shell脚本编程大全》 第三章 学习笔记

    第三章:基本的bash shell命令 bash程序使用命令行参数来修改所启动shell的类型 参数 描述 -c string 从string中读取命令并处理他们 -r 启动限制性shell,限制用户 ...

  7. C#高级编程 (第六版) 学习 第三章:对象和类型

    第三章 对象和类型 1,类和结构 类存储在托管堆上 结构存储在堆栈上   2,类成员 类中的数据和函数称为类成员 数据成员 数据成员包括了字段.常量和事件   函数成员 方法:与某个类相关的函数,可以 ...

  8. Python黑帽编程3.0 第三章 网络接口层攻击基础知识

    3.0 第三章 网络接口层攻击基础知识 首先还是要提醒各位同学,在学习本章之前,请认真的学习TCP/IP体系结构的相关知识,本系列教程在这方面只会浅尝辄止. 本节简单概述下OSI七层模型和TCP/IP ...

  9. Java基础知识二次学习--第三章 面向对象

    第三章 面向对象   时间:2017年4月24日17:51:37~2017年4月25日13:52:34 章节:03章_01节 03章_02节 视频长度:30:11 + 21:44 内容:面向对象设计思 ...

随机推荐

  1. windows下开启 PHP扩展Redis

    Redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set ...

  2. vue-nuxt.js部署到宝塔主机服务器

    废话不多说,直接上步骤,如下: 本文章为在 vue环境下使用了nuxt.js 1.搭建环境--由于本人安装的是宝塔主机,因此如下: 由于我直接使用的是宝塔主机,直接去“软件管理”安装 PM2管理器. ...

  3. PHP 审计

    1.get  和post  上传数组,数组的sha1值相等 通过阅读代码,我们发现要想得到flag就要达到下面三个条件: 使 uname的sha1值 与 passwd的sha1的值 相等    但是同 ...

  4. xss:利用编码绕过(新手向)

    当浏览器接受到一份HTML代码后,会对标签之间(<p>xxx</p>等,<script>除外).标签的属性中(<a href='xxxx'>)进行实体字 ...

  5. HyperLedger Fabric 1.4 区块链工作过程(2.3)

    区块链的工作过程分交易产生.交易广播.节点计算.获取记账权.记账权广播.接收区块.验证区块和完成记账七个过程. 1) 交易产生:用户向区块链发了一笔交易信息,将产生交易:2) 交易广播:当一笔新交易产 ...

  6. Makefile:如何写目标依赖

    本文并不是Makefile的教程,仅是本人学习时的感悟. Makefile的基本格式 目标:依赖文件(or 目标) [tab]命令 目标: 是要生成的或操作的命令的索引 依赖: 是生成目标依赖的文件或 ...

  7. Oracle Data Provider for .NET Support for Microsoft .NET Core

    Oracle Data Provider for .NET Support for Microsoft .NET Core的官方地址,记录下来,按照官方描述,会在2017年底左右发布,暂时还没有看到相 ...

  8. 20155311 实验三 敏捷开发与XP实践 实验报告

    20155311 实验三 敏捷开发与XP实践 实验报告 实验内容 XP基础 xp核心工具 相关工具 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim ...

  9. 20155327 实验一《Java开发环境的熟悉》实验报告

    实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序. 实验知识点 JVM.JRE.JDK的安装位置与区别: 命令行运行javac:jav ...

  10. 使用salt-ssh初始化系统安装salt-minion

    salt-ssh介绍及使用方法 在ssh上执行salt命令和状态而不安装salt-minion,类似于ansible. 1. salt-ssh的安装: [root@linux-node1 ~]# yu ...