好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

C#在Winform窗口开发中自定义主菜单及设置主菜单的打开方式

C#在Winform窗口开发中自定义主菜单及设置主菜单的打开方式

  public partial class MainForm : Form

    {

        public static Form fm = null;

        public MainForm()

        {

            InitializeComponent();

        }

        private void MainForm_Load(object sender, EventArgs e)

        {

            #region 菜单管理

            ToolStripMenuItem fileMenu = new ToolStripMenuItem("文件(&F)"); // &F 表示快捷键 Alt+F

            // 2. 创建子菜单项

            ToolStripMenuItem newItem = new ToolStripMenuItem();

            newItem.Text = "新建(&N)";

            newItem.Name = "NewFile";

            newItem.Tag = "newfile";

            newItem.ToolTipText = "1";

            newItem.AccessibleName = "aaaaa";//可做为参数传递

            newItem.ShortcutKeys = Keys.Control | Keys.N; // 设置快捷键 Ctrl+S

            ToolStripMenuItem openItem = new ToolStripMenuItem();

            openItem.Text = "打开(&O)";

            openItem.Name = "OpenFile";

            openItem.Tag = "openfile";

            openItem.ToolTipText = "22";

            openItem.AccessibleName = "bbbbb";//可做为参数传递

            fileMenu.DropDownItems.Add(newItem);

            fileMenu.DropDownItems.Add(openItem);

            menuStrip1.Items.Add(fileMenu);

                        #endregion

            SetMenuClick();

        }

        public void OnNewClicked(string aaa)

        {

        }

        /// <summary>

        /// 主要控件初始化

        /// </summary>

        public void SetMenuClick()

        {

            //内容pannel赋值

            //菜单strip赋值

            var menus = this.menuStrip1.Items;//获取7个主菜单

            foreach (ToolStripMenuItem item in menus)//循环主菜单

            {

                foreach (ToolStripItem temp in item.DropDownItems)//循环主菜单下的子菜单

                {

                    temp.Click += new EventHandler(ToolStripItem_Click);//给子菜单绑定点击

                }

            }

        }

        /// <summary>

        /// 切换内容,重置panel

        /// </summary>

        /// <param name="form"></param>

        public void ShowForm(Form form)

        {

            panel1.Visible = false;

            // 释放之前 panel 里面的控件

            foreach (Control item in panel1.Controls)

            {

                item.Dispose();

            }

            // 设置窗体的层级

            form.TopLevel = false;

            // 去除边框

            form.FormBorderStyle = FormBorderStyle.None;

            // 设置停靠

            form.Dock = DockStyle.Fill;

            // 重置

            Panel son = new Panel();

            son.Dock = DockStyle.Fill;

            son.Controls.Clear();

            son.Controls.Add(form);

            panel1.Controls.Clear();

            panel1.Controls.Add(son);

            form.Show();

            Thread.Sleep(100);

            panel1.Visible = true;

        }

        /// <summary>

        /// 顶部菜单点击逻辑

        /// </summary>

        /// <param name="sender"></param>

        /// <param name="e"></param>

        private void ToolStripItem_Click(object sender, EventArgs e)

        {

            //定位目标

            ToolStripItem item = (ToolStripItem)sender;

            if (fm != null) fm.Close();

            MessageBox.Show(item.Tag.ToString()+"=="+item.AccessibleName);

            switch (item.Tag)

            {

                // 系统菜单

                case "company":  /*fm = new EditCompany();*/ break;//公司

                default:

                    return;

            }

            if(fm!= null)ShowForm(fm);

        }

    }


查看更多关于C#在Winform窗口开发中自定义主菜单及设置主菜单的打开方式的详细内容...

  阅读:19次