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 内容:面向对象设计思 ...
随机推荐
- Zeta Linux上进行WiFi Direct调试
1)叫醒p2p网卡 ifconfig p2p0 up 2)启动wpa_supplicant服务 wpa_supplicant -Dnl80211 -ip2p0 -c /etc/wpa_suppli ...
- python3内置函数大全
由于面试的时候有时候会问到python的几个基本内置函数,由于记不太清,就比较难受,于是呕心沥血总结了一下python3的基本内置函数 Github源码: https://github. ...
- android studio 调试技巧(简直太好用)
android studio 调试技巧(简直太好用) 说到android studio的调试,很多人可能会说,这有什么可讲的不就是一个断点调试么,刚开始我也是这么认为的,直到我了解之后,才发现,调试原 ...
- 有关javaEE及WebGIS的一些地址
jdk:https://www.oracle.com/index.html eclipse:https://www.eclipse.org spring:http://repo.springsourc ...
- java入门---变量类型&类变量&局部变量&实例变量&静态变量
在Java语言中,所有的变量在使用前必须声明.声明变量的基本格式如下: type identifier [ = value][, identifier [= value] ...] ; ...
- 20155339 2017-2018-1《信息安全系统设计》第四周课堂测试、Makefile以及myod
20155339 2017-2018-1<信息安全系统设计>第四周课堂测试.Makefile以及myod 测试1-vi 每个.c一个文件,每个.h一个文件,文件名中最好有自己的学号 用Vi ...
- BZOJ4034_树上操作_KEY
题目传送门 这道题可以树链剖分+线段树. 其他操作模板,第二个操作只需要将x~x+size[x]-1区间加值即可. code: #include <cstdio> #include < ...
- Nginx入门篇(三)之虚拟主机配置
一.虚拟主机概念 所谓虚拟主机,在Web服务当中就是一个独立的网站站点,这个站点对应独立的域名(也有可能是IP或者端口),具有独立的程序和资源目录,可以独立地对外提供服务供用户访问. 这个独立的站点在 ...
- Retinex图像增强和暗通道去雾的关系及其在hdr色调恢复上的应用
很多人都认为retinex和暗通道去雾是八杆子都打不着的增强算法.的确,二者的理论.计算方法都完全迥异,本人直接从二者的公式入手来简单说明一下,有些部分全凭臆想,不对之处大家一起讨论. 首先,为描述方 ...
- linux下,将一个目录中的图片文件合成为gif图片
# {} 为文件所在目录位置 # {} 为gif图片位置 convert -delay -depth -layers optimize -quality -loop {} {}