Winform菜单之ContextMenuStrip

ContextMenuStrip是Winform中的菜单控件之一,它通常用于右键菜单。在Winform中,通常用ContextMenu属性将ContextMenuStrip菜单与控件关联起来。可以在设计器中创建ContextMenuStrip控件,或者在代码中动态创建。

一、使用方法:

1. 在Winform设计器中创建ContextMenuStrip控件,并添加菜单项,设定菜单项的文本、图标、快捷键等属性。如下图所示:

![image-1](https://img-blog.csdnimg.cn/img_convert/c98c19239b3f7fdee69b1a3ac58b0a7e.png)

2. 在需要显示ContextMenu的控件上,设置ContextMenu属性为之前创建的ContextMenuStrip控件。

![image-2](https://img-blog.csdnimg.cn/img_convert/aedee834ddcbd3eef9d0ac00ef6c5e54.png)

3. 在控件上添加鼠标事件处理程序,通常是鼠标右击事件。在事件处理程序中调用Show方法,显示ContextMenuStrip菜单。

```csharp

private void btnShowMenu_MouseDown(object sender, MouseEventArgs e)

{

if (e.Button == MouseButtons.Right)

{

contextMenuStrip1.Show(btnShowMenu, e.Location);

}

}

```

二、案例说明:

下面通过一个具体的案例来说明ContextMenuStrip的使用方法。

案例背景:设计一个简单的记事本应用程序,包含保存、打开、复制、粘贴、剪切等基本功能。

1. 创建Winform项目,并设计UI界面,在表单上添加文本框、菜单栏和上下文菜单栏。如下图所示:

![image-3](https://img-blog.csdnimg.cn/img_convert/e09418f78f63fecc3f1aa54167847d82.png)

2. 添加菜单项,并分别设置每个菜单项的文本、图标、快捷键等属性。如下图所示:

![image-4](https://img-blog.csdnimg.cn/img_convert/d3e446b4c06ae52213e77cd3a1fbc5a4.png)

3. 在文本框控件和菜单栏控件上分别关联ContextMenuStrip控件。

![image-5](https://img-blog.csdnimg.cn/img_convert/c2d8ddaa94aa315da95c2da8892a465d.png)

4. 为每个菜单项添加事件处理程序,实现对应的功能。

```csharp

//新建

private void 新建NToolStripMenuItem_Click(object sender, EventArgs e)

{

textBox1.Clear();

}

//打开

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

{

OpenFileDialog openFileDialog = new OpenFileDialog();

openFileDialog.Filter = "文本文件|*.txt|所有文件|*.*";

if (openFileDialog.ShowDialog() == DialogResult.OK)

{

using (StreamReader reader = new StreamReader(openFileDialog.FileName, Encoding.UTF8))

{

textBox1.Text = reader.ReadToEnd();

}

}

}

//保存

private void 保存SToolStripMenuItem_Click(object sender, EventArgs e)

{

SaveFileDialog saveFileDialog = new SaveFileDialog();

saveFileDialog.Filter = "文本文件|*.txt|所有文件|*.*";

if (saveFileDialog.ShowDialog() == DialogResult.OK)

{

using (StreamWriter writer = new StreamWriter(saveFileDialog.FileName, false, Encoding.UTF8))

{

writer.Write(textBox1.Text);

}

}

}

//复制

private void 复制CToolStripMenuItem_Click(object sender, EventArgs e)

{

if (textBox1.SelectedText.Length > 0)

{

Clipboard.SetText(textBox1.SelectedText);

}

}

//剪切

private void 剪切XToolStripMenuItem_Click(object sender, EventArgs e)

{

if (textBox1.SelectedText.Length > 0)

{

Clipboard.SetText(textBox1.SelectedText);

textBox1.SelectedText = "";

}

}

//粘贴

private void 粘贴VToolStripMenuItem_Click(object sender, EventArgs e)

{

if (Clipboard.ContainsText())

{

textBox1.SelectedText = Clipboard.GetText();

}

}

```

5. 在ContextMenuStrip的Opening事件处理程序中,设置菜单项的可用状态。

```csharp

private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)

{

//剪切、复制、删除菜单项只有在文本框中有文本被选中时才能使用

if (textBox1.SelectedText.Length > 0)

{

剪切XToolStripMenuItem.Enabled = true;

复制CToolStripMenuItem.Enabled = true;

删除DToolStripMenuItem.Enabled = true;

}

else

{

剪切XToolStripMenuItem.Enabled = false;

复制CToolStripMenuItem.Enabled = false;

删除DToolStripMenuItem.Enabled = false;

}

//粘贴菜单项只有在剪贴板中有文本时才能使用

if (Clipboard.ContainsText())

{

粘贴VToolStripMenuItem.Enabled = true;

}

else

{

粘贴VToolStripMenuItem.Enabled = false;

}

}

```

6. 运行程序,测试功能。如下图所示:

![image-6](https://img-blog.csdnimg.cn/img_convert/9a8bae0075495d7a076131cfb7e7539a.png)

本文介绍了Winform中ContextMenuStrip菜单控件的使用方法和案例说明,通过此控件可以实现右键菜单的功能,提升Winform程序的用户体验。 如果你喜欢我们三七知识分享网站的文章, 欢迎您分享或收藏知识分享网站文章 欢迎您到我们的网站逛逛喔!https://www.37seo.cn/

点赞(77) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部