Windows Forms编程实战学习:第三章 菜单
第三章 菜单
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编程实战学习:第三章 菜单的更多相关文章
- Windows Forms编程实战学习:第一章 初识Windows Forms
初识Windows Forms 1,用C#编程 using System.Windows.Forms; [assembly: System.Reflection.AssemblyVersion(& ...
- Windows Forms编程实战学习:第二章 欢迎使用Visual Studio
第二章 欢迎使用Visual Studio 1,AssemblyInfo文件 包含程序集的属性,向应用程序添加元数据 [assembly:<attribute>(<setting&g ...
- 《Java并发编程实战》第三章 对象的共享 读书笔记
一.可见性 什么是可见性? Java线程安全须要防止某个线程正在使用对象状态而还有一个线程在同一时候改动该状态,并且须要确保当一个线程改动了对象的状态后,其它线程能够看到发生的状态变化. 后者就是可见 ...
- java并发编程实战:第三章----对象的共享
我们不仅仅希望防止某个线程使用某个状态时,另一个线程在修改它:我们还希望某个线程修改了某个状态后,其他线程能够看到状态的变化. 一.可见性 重排序:在没有同步的情况下,编译器.处理器可能对代码的执行顺 ...
- 程序员编程艺术:第三章续、Top K算法问题的实现
程序员编程艺术:第三章续.Top K算法问题的实现 作者:July,zhouzhenren,yansha. 致谢:微软100题实现组,狂想曲创作组. 时间:2011年05月08日 ...
- 《Linux命令行与shell脚本编程大全》 第三章 学习笔记
第三章:基本的bash shell命令 bash程序使用命令行参数来修改所启动shell的类型 参数 描述 -c string 从string中读取命令并处理他们 -r 启动限制性shell,限制用户 ...
- C#高级编程 (第六版) 学习 第三章:对象和类型
第三章 对象和类型 1,类和结构 类存储在托管堆上 结构存储在堆栈上 2,类成员 类中的数据和函数称为类成员 数据成员 数据成员包括了字段.常量和事件 函数成员 方法:与某个类相关的函数,可以 ...
- Python黑帽编程3.0 第三章 网络接口层攻击基础知识
3.0 第三章 网络接口层攻击基础知识 首先还是要提醒各位同学,在学习本章之前,请认真的学习TCP/IP体系结构的相关知识,本系列教程在这方面只会浅尝辄止. 本节简单概述下OSI七层模型和TCP/IP ...
- Java基础知识二次学习--第三章 面向对象
第三章 面向对象 时间:2017年4月24日17:51:37~2017年4月25日13:52:34 章节:03章_01节 03章_02节 视频长度:30:11 + 21:44 内容:面向对象设计思 ...
随机推荐
- 树莓派3B+学习笔记:12、安装FireFox浏览器
1.在终端中输入 sudo apt-get install iceweasel 2.安装完成后菜单中会自动生成快捷方式 什么是 iceweasel? Iceweasel 是 Firefox(火狐浏览器 ...
- MAC下绕开百度网盘限速下载的方法,三步操作永久生效
第一步:下载所需工具:(①②步我放在同一个文件夹,可一起下载,链接失效请留言) 工具地址:链接: https://pan.baidu.com/s/1raicYzM 密码: ve3n ①下载Aria2G ...
- ACM1012:u Calculate e
Problem Description A simple mathematical formula for e iswhere n is allowed to go to infinity. This ...
- SQL 查询某时间段的数据 datadiff 计算时间差
datediff语法格式:datediff(day,开始时间,结束时间) 一.应用举例: 上面的代码,将查询 'created_time' > '2016-09-20' 的所有记录. 如果要查 ...
- idea创建Scala入门HelloWorld
Scala开发环境的搭建 首先到Scala官网下载Scala网址为 https://www.scala-lang.org/download/ 找到下图所示位置:选择相对应的版本的Scala进行下载,这 ...
- css中元素的分类
按照显示元素分类: 行内元素(lnline-element):元素的高度,行高,顶底边距由元素所包含的图片或文字所决定,不可改变:其宽度为内容文字或图片的宽度所决定,而其左右边距可人为设置. 行内元素 ...
- django无法加载样式
如果运行的环境是win10,那么首先应该考虑是否是如下问题 win10中Django后台admin无法加载CSS等样式 解决: 修改win10的注册表:[win+R输入Regedit] 因为你安装的某 ...
- 20155212Arrays和String测试_MySort
Arrays和String单元测试 在IDEA中以TDD的方式对String类和Arrays类进行学习 测试相关方法的正常,错误和边界情况 String类 charAt split Arrays类 s ...
- 20155310《Java程序设计》实验五(网络编程与安全)实验报告
20155310<Java程序设计>实验五(网络编程与安全)实验报告 一.实验内容及步骤 •任务一: 编写MyBC.java实现中缀表达式转后缀表达式的功能 编写MyDC.java实现从上 ...
- 2016-2017-2015329 《Java程序设计》第4周学习总结
学号 2016-2017-2015329 <Java程序设计>第4周学习总结 教材学习内容总结 面向对象有三大特性:封装.继承.多态 封装 封装是指,一种将抽象性函式接口的实例细节部份包装 ...