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 内容:面向对象设计思 ...
随机推荐
- 一个数据仓库时代开始--Hive
一.什么是 Apache Hive? Apache Hive 是一个基于 Hadoop Haused 构建的开源数据仓库系统,我们使用它来查询和分析存储在 Hadoop 文件中的大型数据集.此外,通过 ...
- HCNA(一)网络传输介质
一 .同轴线缆 介绍:同轴线缆是一种早期的网络传输介质,同轴电缆的得名与它的结构相关,由内导体.外导体.绝缘介质和防护套四部分组成.同样支持10Mbps传输速率.现在已经基本被淘汰,不在应用于企业网络 ...
- 音频算法之小黄人变声 附完整C代码
前面提及到<大话音频变声原理 附简单示例代码>与<声音变调算法PitchShift(模拟汤姆猫) 附完整C++算法实现代码> 都稍微讲过变声的原理和具体实现. 大家都知道,算法 ...
- hadoop伪分布式组件安装
一.版本建议 Centos V7.5 Java V1.8 Hadoop V2.7.6 Hive V2.3.3 Mysql V5.7 Spark V2.3 Scala V2.12.6 Flume V1. ...
- Spring事务控制
我们在实际业务场景中,经常会遇到数据频繁修改读取的问题.在同一时刻,不同的业务逻辑对同一个表数据进行修改,这种冲突很可能造成数据不可挽回的错乱,所以我们需要用事务来对数据进行管理. 1. 到底什么是事 ...
- 20155327 2016-2017-2《Java程序设计》课程总结
20155327 2016-2017-2<Java程序设计>课程总结 每周作业链接汇总 预备作业1:http://www.cnblogs.com/l97----/p/6160983.htm ...
- sql语句-7-更新数据
- 【LG5022】[NOIP2018]旅行
[LG5022][NOIP2018]旅行 题面 洛谷 题解 首先考虑一棵树的部分分怎么打 直接从根节点开始\(dfs\),依次选择编号最小的儿子即可 而此题是一个基环树 怎么办呢? 可以断掉环上的一条 ...
- 国外10个ASP.Net C#下的开源CMS
国外10个ASP.Net C#下的开源CMS https://blog.csdn.net/peng_hai_lin/article/details/8612895 1.Ludico Ludico是 ...
- Scratch3.0设计的插件系统(上篇)
我们每个人在内心深处都怀有一个梦想: 希望创造出一个鲜活的世界,一个宇宙.处在我们生活的中间.被训练为架构师的那些人,拥有这样的渴望: 在某一天,在某一个地方,因为某种原因,创造出了一个不可思议的.美 ...