第三章 菜单

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. springboot配置kafka生产者和消费者详解

    在原有pom.xml依赖下新添加一下kafka依赖ar包 <!--kafka--> <dependency> <groupId>org.springframewor ...

  2. 大数据分析系统Hadoop的13个开源工具

    Hadoop是由Apache基金会开发的一个大数据分布式系统基础架构,最早版本是2003年原Yahoo!DougCutting根据Google发布的学术论文研究而来. 用户可以在不了解分布式底层细节的 ...

  3. git向码云上提交项目

    git向码云上提交项目 设置账号名字和邮箱 $ git config --global user.name "注册时账号的名字" $ git config --global use ...

  4. devise定义多个authentication_keys

    在你的model中加入 def self.find_for_database_authentication(warden_conditions) conditions = warden_conditi ...

  5. 20155310 2016-2017-2《Java程序设计》课程总结

    20155310 2016-2017-2<Java程序设计>课程总结 (按顺序)每周作业链接汇总 预备作业一:对师生关系的看法以及对专业的期望 预备作业二:Learning by doin ...

  6. 20155316 2016-2017-2 《Java程序设计》第9周学习总结

    教材学习内容总结 课堂学习内容 不要上帝类,设计小类 soild设计 开放封闭原则:对扩充开放,对修改封闭 OOD方案 DIP 基耦合 教材学习内容 JDBC架构 交易与隔离层级 RowSet .cl ...

  7. 20155320信息安全系统设计第二周课堂考试总结及myod的实现

    20155320 信息安全系统设计第二周课堂考试总结及myod的实现 第二周测试一二已在课上提交 第二周测试3-gdb测试 用gcc -g编译vi输入的代码 在main函数中设置一个行断点 在main ...

  8. 初识Linux的感受与对它的印象——20155328张钰清

    之前从未接触过虚拟机的我,由于这次寒假预备作业,稍稍地认识了一下Linux操作系统. 在自己笔记本上安装Linux操作系统 根据老师提供的<基于VirtualBox虚拟机安装Ubuntu图文教程 ...

  9. 微信小程序模板消息群发解决思路

    基于微信的通知渠道,微信为开发者提供了可以高效触达用户的模板消息能力,以便实现服务的闭环并提供更佳的体验.(微信6.5.2及以上版本支持模板功能.低于该版本将无法收到模板消息.) 模板推送位置:服务通 ...

  10. katalon系列十二:自动化上传文件、下载文件

    一.下载文件1.下载文件时,需要先设置好Chrome/Firefox下载路径.不弹出下载框等,大家先学习下在selenium下如何设置:https://www.cnblogs.com/fnng/p/7 ...