(1)创建一个项目,将其命名为MenuHistory,默认窗体为Form1。

(2)从工具箱中向Form1窗体添加MenuStrip控件,同时向窗体添加OpenFileDialog控件。创建一个“文件”主菜单,在其下面创建打开、关闭所有、退出等菜单选项。

(3)代码如下:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.IO;





namespace HistoryRecord

{

    public partial class Form1 : Form

    {

        //string address;

        public Form1()

        {

            InitializeComponent();

            //address = System.Environment.CurrentDirectory;

        }



        //相对路径

        string address = System.Environment.CurrentDirectory;



        //将打开的路径写入到INI文件

        private void 打开ToolStripMenuItem_Click(object sender, EventArgs e)

        {

            openFileDialog1.FileName = "";

            this.openFileDialog1.ShowDialog();

            StreamWriter s = new StreamWriter(address + "\\Menu.ini", true);//true:

            s.WriteLine(openFileDialog1.FileName);//写入INI文件

            s.Flush();//清空缓存数据,并将缓存数据写入基础流

            s.Close();          

        }

        //读取INI文件,并将信息加入菜单

        private void Form1_Load(object sender, EventArgs e)

        {

            StreamReader sr = new StreamReader(address + "\\Menu.ini");           

            int i = this.文件ToolStripMenuItem.DropDownItems.Count - 2;

            while (sr.Peek() >= 0)

            {

                ToolStripMenuItem menuitem = new ToolStripMenuItem(sr.ReadLine());

                this.文件ToolStripMenuItem.DropDownItems.Insert(i, menuitem);

                i++;

                menuitem.Click += new EventHandler(menuitem_Click);

            }

            sr.Close();

        }



        private void menuitem_Click(object sender, EventArgs e)

        {

            ToolStripMenuItem menu = (ToolStripMenuItem)sender;

            ShowWindows(menu.Text);

        }





        //自定义方法ShowWindows()用来加载背景图片并显示窗体

        public void ShowWindows(string fileName)

        {

            Image p = Image.FromFile(fileName);

            Form f = new Form();

            f.MdiParent = this;            

            f.BackgroundImage = p;

            f.Show();        

        }



        private void 关闭所有ToolStripMenuItem_Click(object sender, EventArgs e)

        {

            //用遍历获取所有子窗体 

            foreach (Form frm in this.MdiChildren)

            {

                frm.Close(); //关闭子窗体

            }   

        }



        private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)

        {

            Application.Exit();

        }

    }

}

扩展:

1:菜单项打开隐藏按钮,菜单不关闭

//菜单点击打开隐藏时不关闭

            this.文件ToolStripMenuItem.ShowDropDown();

2:文件夹选项,A事件调用B事件

//调用菜单下的选项点击事件

                    this.文件ToolStripMenuItem.DropDownItems[3].PerformClick();

版权声明:本文为博主原创文章,未经博主允许不得转载。

winform 菜单项显示历史记录 分类: WinForm 2014-07-11 18:15 196人阅读 评论(0) 收藏的更多相关文章

  1. mount命令以及mount ntfs硬盘权限权限与显示的问题 分类: shell ubuntu 2014-11-08 18:29 148人阅读 评论(0) 收藏

    sudo mount -t 文件系统类型 -o 可设置选项 设备路经 访问路经 #常用文件类型如下: iso9660 光驱文件系统, vfat fat/fat32分区, ntfs ntfs分区, sm ...

  2. 由 argv引出的main参数 分类: C/C++ 2014-11-08 18:00 154人阅读 评论(0) 收藏

    我们经常用的main函数都是不带参数的.因此main 后的括号都是空括号.实际上,main函数可以带参数,这个参数可以认为是 main函数的形式参数.C语言规定main函数的参数只能有两个, 习惯上这 ...

  3. 博弈论入门小结 分类: ACM TYPE 2014-08-31 10:15 73人阅读 评论(0) 收藏

    文章原地址:http://blog.csdn.net/zhangxiang0125/article/details/6174639 博弈论:是二人或多人在平等的对局中各自利用对方的策略变换自己的对抗策 ...

  4. Rebuild my Ubuntu 分类: ubuntu shell 2014-11-08 18:23 193人阅读 评论(0) 收藏

    全盘格式化,重装了Ubuntu和Windows,记录一下重新配置Ubuntu过程. //build-essential sudo apt-get install build-essential sud ...

  5. 灰度世界算法(Gray World Algorithm) 分类: 图像处理 Matlab 2014-12-07 18:40 874人阅读 评论(0) 收藏

    人的视觉系统具有颜色恒常性,能从变化的光照环境和成像条件下获取物体表面颜色的不变特性,但成像设备不具有这样的调节功能, 不同的光照环境会导致采集的图像颜色与真实颜色存在一定程度的偏差,需要选择合适的颜 ...

  6. Bzoj 1036 树的统计 分类: ACM TYPE 2014-12-29 18:55 72人阅读 评论(0) 收藏

    Description 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w.我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值改为t II. Q ...

  7. PIGS 分类: POJ 图论 2015-08-10 09:15 3人阅读 评论(0) 收藏

    PIGS Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 18209 Accepted: 8277 Description Mir ...

  8. Pots 分类: 搜索 POJ 2015-08-09 18:38 3人阅读 评论(0) 收藏

    Pots Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 11885 Accepted: 5025 Special Judge D ...

  9. The Happy Worm 分类: POJ 排序 2015-08-03 18:57 5人阅读 评论(0) 收藏

    The Happy Worm Time Limit: 5000MS Memory Limit: 131072K Total Submissions: 4698 Accepted: 1047 Descr ...

随机推荐

  1. Constructor and destructor -- Initialization & Cleanup in C++

    Why need initialization and cleanup? A large segment of C bugs occur when the programmer forgets to ...

  2. Php会员权限

    <?phpecho $uu=@array_sum(@$_POST['gr']);?><form action="" method="POST" ...

  3. JavaScript 自定义单元测试

    <!doctype html> <html> <head> <meta charset="utf-8"> <script> ...

  4. Xsd: Xml序列化、反序列化的利器

    下面讲述根据xml生成对应序列化反序列化类的过程,xml需要首先转化为xsd,然后再生成为实体类.其中,XSD是XML Schema Definition的缩写. 1.制作xml文件:   <? ...

  5. Java 内存区域和GC机制--备用

    Java垃圾回收概况 Java GC(Garbage Collection,垃圾收集,垃圾回收)机制,是Java与C++/C的主要区别之一,作为Java开发者,一般不需要专门编写内存回收和垃圾清理代 ...

  6. js一些方法的扩展

    //JS扩展方法与C#的扩展方法非常相似,也是可以链式调用的,也是通过对某个类的扩展写法来实现.这个东西非常好用,如果将预先写好的方法放到一个js里面引用的话,那么后面写js将非常有趣. //下面给出 ...

  7. Delphi中快捷键的使用

    CTRL+SHIFT+↑(↓) 在过程.函数.事件内部, 可跳跃到相应的过程.函数.事件的定义(在INTERFACE和IMPLEMENTATION之间来回切换)CTRL+J (弹出DELPHI语句提示 ...

  8. 如何通过js使搜索关键词高亮

    给你推荐通过jquery来实现高亮关键词.jquery.textSearch-1.0.js代码: (function($){ $.fn.textSearch =function(str,options ...

  9. KeilC51使用详解 (三)

    C51强大功能及其高效率的重要体现之一在于其丰富的可直接调用的库函数,多使用库函数使程序代码简单,结构清晰,易于调试和维护,下面介绍C51的库函数系统. 第一节 本征库函数(intrinsic rou ...

  10. Delphi 类成员的默认访问权限(用RTTI检测)

    类的成员,如果没有private.public等显示什么,直接在class下面,没有写访问权限的限定符,这种成员是不是默认的访问权限啊?还是publish的访问权限啊? --------------- ...