【C#】菜单

来源:互联网 发布:口碑和淘宝外卖一样么 编辑:程序博客网 时间:2024/06/06 08:44

菜单栏是窗体程序中,一个很重要的组件,下面就利用一个小程序,说明C#窗体程序中如何使用菜单。

如下图,实现一个很简单的,在各类文本编辑器中都很常见的替换功能。


注意到,无论是菜单栏的工具 或者是 替换功能,都是配有快捷键的。

选择 替换功能弹出一个新的模态对话框,让用户输入东西。

具体制作过程如下:

1、首先贴上本解决方案的文件组织树,其中Intent.cs是用来在窗体与窗体之间传递数值的,具体在《【C#】窗体间互相传值》(点击打开链接)讲过,这里不再赘述了。


2、之后是Form1.cs的布局,本文的主角菜单就在这里出场了,与其它控件一样简单,直接从工具栏拖出MenuStrip就可以了,同时拖出textbox1这个控件,将textbox1的Multiline改成True,anchor改成Top,right,left,bottom以适应最大化。


在为Form1菜单添加每一项的时候注意:先输入英文,之后我们再自己手动改其Text,因为你输入的东西,会自动成name与text的一部分,name是不可以用中文的。对于类此“工具(T)”含有子项的东西,与当年VC6《【mfc】利用到MFC菜单、字体对话框、OnSize函数实现简易记事本》(点击打开链接)的菜单一样,在Text中写成“工具(&T)”就能够实现Alt+T这个快捷键了。


至于类似“替换”这样的子项,需要我们自行设置其ShortcutKeys,之后双击这个“替换”为其设置点击事件。


3、双击这个“替换”为其设置点击事件之后,不用急着写代码,我们先新建一个Form2窗体,与Intent.cs,Intent.cs就是用来传值的,代码如下,在之前的文章说过,不再赘述。

using System;using System.Collections.Generic;using System.Text;namespace menu{    class Intent    {        public static Dictionary<string, Object> dict = new Dictionary<string, Object>();    }}

Form2的布局如下:


4、之后Form1的代码如下,替换文本很简单,点击“替换”按钮,Form2作为一个模态对话框蹦出来,得到Form2传递过来的两个值,直接取走textbox1的text用replace方法一整,再放上去就完成。

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace menu{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();            this.StartPosition = FormStartPosition.CenterScreen;//设置form1的开始位置为屏幕的中央          }        private void replaceToolStripMenuItem_Click(object sender, EventArgs e)        {            Form2 form2 = new Form2();//声明要使用form2窗体            form2.Text = this.Text;            if (form2.ShowDialog() == DialogResult.OK)            {                textBox1.Text = textBox1.Text.Replace(Intent.dict["form2_textbox1_text"] + "", Intent.dict["form2_textbox2_text"] + "");            }        }    }}

5、Form2的代码则如下,设置好不同按钮的返回值给Form1就可以了。

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace menu{    public partial class Form2 : Form    {        public Form2()        {            InitializeComponent();            this.StartPosition = FormStartPosition.CenterParent;        }        private void button1_Click(object sender, EventArgs e)        {            Intent.dict["form2_textbox1_text"] = textBox1.Text;            Intent.dict["form2_textbox2_text"] = textBox2.Text;            this.DialogResult = DialogResult.OK;//同时设置返回值为OK,不设置的话,默认返回Cancel              this.Close();        }        private void button2_Click(object sender, EventArgs e)        {            this.Close();        }    }}


0 0
原创粉丝点击