第三章 菜单

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. Ubuntu16.04上安装neo4j数据库

    什么是neo4j数据库? neo4j数据库是图数据库的一种,属于nosql的一种,常见的nosql数据库还有redis.memcached.mongDB等,不同于传统的关系型数据库,nosql数据也有 ...

  2. laychat聊天功能

    windows版本:1.直接下载laychat聊天室压缩包,并解压到PHPstudy本地PHP环境中去:2.进入E:\PHPTutorial\WWW\laychat-master\vendor\Wor ...

  3. 【大数据实战】Logstash采集->Kafka->ElasticSearch检索

    1. Logstash概述 Logstash的官网地址为:https://www.elastic.co/cn/products/logstash,以下是官方对Logstash的描述. Logstash ...

  4. Button控件双击事件不执行

    Button控件双击事件不执行 最近组态组新加入了一位同事,该同事原先是做ASP.NET的,没有做过WindowForm的开发.所以就先安排一个小示例来测验一下.这个示例有些年头了,当年我进入组态开发 ...

  5. SDR软件无线电知识要点(三)EVM

    SDR软件无线电知识要点(三)EVM 信号质量如何评估 Noise Figure (NF) or sensitivity and Error Vector Magnitude (EVM) provid ...

  6. hadoop运维笔记

    一. 故障处理部分 1.1. spark提交任务报错java.lang.NoClassDefFoundError: com/alibaba/fastjson/JSON   报错原因: 在运行环境没有找 ...

  7. django中models的filter过滤方法

    __gt     大于__gte   大于等于 __lt      小于 __lte    小于等于 __in     存在于一个list范围内 __startswith    以...开头 __is ...

  8. PL/SQL轻量版(一)——入门介绍

    一.概述 1.概念对比: SQL:结构化查询语言(Structured Query Language)简称SQL(发音:/ˈes kjuː ˈel/ "S-Q-L"),是一种特殊目 ...

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

    20155206 2016-2017-2 <Java程序设计>第1周学习总结 第一,二章学习内容总结 第一章 java基本知识 Java的三种技术架构: JAVAEE:Java Platf ...

  10. python3工作环境部署+spyder3+jupyter notebook

    1.python3安装 1)官网去下载python3.7版本,双击安装,只要注意勾选写到PATH就行,其它直接NEXT. 2)安装完成,CMD键入 python 回车,跳出python界面就是成功. ...