您的位置:首页 > 编程语言 > C#

【C#】菜单

2015-12-15 11:12 429 查看
菜单栏是窗体程序中,一个很重要的组件,下面就利用一个小程序,说明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();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: