(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. TCP与UDP网络编程总结(一)

    (1):TCP网络编程 我们注意到服务端与客户端通信时是通过客户端的套接字相互通信的,那么服务端的套接字主要是干什么用的呢? TCP服务端设置监听套接字时 int listen(int sock,in ...

  2. windows下配置wnmp

    最近尝试windows下配置nginx+php+mysql,在这里总结一下. 1.下载windows版本的nginx,官网​下载地址:http://nginx.org/en/download.htm, ...

  3. [Linux]XAMPP安装

    XAMPP安装下载地址:http://xiazai.zol.com.cn/index.php?c=Detail_DetailMini&n=19e18f86d0596b5cd&softi ...

  4. MFC笔记

    一.Win32基本程序概念 所有的windows程序都必须载入windows.h MFC程序都有一个Stdafx.h文件,它载入了MFC框架必须的文件. Windows程序以消息为基础,以事件驱动之. ...

  5. UML for Design Pattern

    ************************************************************************************* ************** ...

  6. Centos6.4配置Fedora EPEL源附配置hop5.in源

    查看系统版本 cat /etc/redhat-release 下载CentOS 版本所对应的EPEL 的版本 wget http://download.fedoraproject.org/pub/ep ...

  7. iOS中默认样式修改-b

    项目中有大量的UITableView都需要显示sectionHeader.iOS中默认sessionHeader上的textLabel样式跟设计图不符. 按照我们之前的解决方案,是在每个UITable ...

  8. CALayer 为什么选择 cg 开头 而 不选择 UI 开头

    CALayer  的属性  为什么选择 cg 开头  而 不选择 UI 开头 , 也就是说  为啥要选择 比如 .CGColor      等

  9. mvc Model元数据【学习笔记】

    页面中Html.Editorfor(model=>model.fieldname)这些方法,都是通过Model的元数据来生成html的,我们如果想控制最终生成的html,可以通过修改元数据来实现 ...

  10. UVA 1329 - Corporative Network

    带权值的并查集的应用: 代码: #include<cstdio> #include<algorithm> #include<cmath> #include<c ...