【愚公系列】2023年10月 Winform控件专题 ContextMenuStrip控件详解

举报
愚公搬代码 发表于 2023/10/30 09:32:15 2023/10/30
【摘要】 🏆 作者简介,愚公搬代码🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,阿里云专家博主,腾讯云优秀博主,掘金优秀博主,51CTO博客专家等。🏆《近期荣誉》:2022年CSDN博客之星TOP2,2022年华为云十佳博主等。🏆《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物...

🏆 作者简介,愚公搬代码
🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,阿里云专家博主,腾讯云优秀博主,掘金优秀博主,51CTO博客专家等。
🏆《近期荣誉》:2022年CSDN博客之星TOP2,2022年华为云十佳博主等。
🏆《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。
🏆🎉欢迎 👍点赞✍评论⭐收藏

🚀前言

Winform控件是Windows Forms中的用户界面元素,它们可以用于创建Windows应用程序的各种视觉和交互组件,例如按钮、标签、文本框、下拉列表框、复选框、单选框、进度条等。开发人员可以使用Winform控件来构建用户界面并响应用户的操作行为,从而创建功能强大的桌面应用程序。

🚀一、ContextMenuStrip控件详解

ContextMenuStrip控件是Winform中的菜单控件,可以在右键点击控件时显示一个弹出式菜单。通过添加菜单项和子菜单项,可以为用户提供更多的操作选项。

使用方法:

  1. 在Visual Studio的工具箱中找到ContextMenuStrip控件,将其拖动到窗体上。

  2. 在属性窗口中设置ContextMenuStrip的名称和各项属性。

  3. 在代码中为控件添加菜单项和子菜单项,如下所示:

// 创建一个菜单项
ToolStripMenuItem menuItem1 = new ToolStripMenuItem();
menuItem1.Text = "菜单项1";
menuItem1.Click += new EventHandler(menuItem1_Click);

// 创建一个子菜单项
ToolStripMenuItem subMenuItem1 = new ToolStripMenuItem();
subMenuItem1.Text = "子菜单项1";
subMenuItem1.Click += new EventHandler(subMenuItem1_Click);
menuItem1.DropDownItems.Add(subMenuItem1);

// 将菜单项添加到ContextMenuStrip
contextMenuStrip1.Items.Add(menuItem1);
  1. 在控件的MouseDown事件中判断鼠标右键是否按下,如果是,则显示ContextMenuStrip,如下所示:
private void control_MouseDown(object sender, MouseEventArgs e)
{
    if (e.Button == MouseButtons.Right)
    {
        contextMenuStrip1.Show(control, e.Location);
    }
}

其中,control为需要添加右键菜单的控件。

🔎1.属性介绍

🦋1.1 ToolStripMenuItem

在Winform中使用ContextMenuStrip控件和ToolStripMenuItem控件可以方便地实现弹出式菜单。下面是一个简单的例子,演示如何使用ContextMenuStrip和ToolStripMenuItem控件,在右键菜单中添加两个选项并处理它们的单击事件:

  1. 首先,在窗体中添加一个按钮和一个ContextMenuStrip控件;

  2. 将ContextMenuStrip控件的Name属性设置为contextMenuStrip1;

  3. 在contextMenuStrip1的Items属性中添加两个ToolStripMenuItem控件,分别为toolStripMenuItem1和toolStripMenuItem2;

  4. 设置toolStripMenuItem1的Text属性为"复制",设置toolStripMenuItem2的Text属性为"粘贴";

  5. 在toolStripMenuItem1的Click事件中添加如下代码:

private void toolStripMenuItem1_Click(object sender, EventArgs e)
{
    Clipboard.SetText("复制的文本内容");
}
  1. 在toolStripMenuItem2的Click事件中添加如下代码:
private void toolStripMenuItem2_Click(object sender, EventArgs e)
{
    textBox1.Text = Clipboard.GetText();
}
  1. 最后,在按钮的MouseDown事件中添加如下代码:
private void button1_MouseDown(object sender, MouseEventArgs e)
{
    if (e.Button == MouseButtons.Right)
    {
        contextMenuStrip1.Show(this, e.Location);
    }
}

运行程序,右键单击按钮即可弹出该控件的ContextMenuStrip菜单,并可以看到添加的两个菜单项,单击菜单项也能够实现复制和粘贴的功能。

🦋1.2 ToolStripComboBox

ContextMenuStrip控件是一个弹出式菜单控件,其中ToolStripComboBox属性可以用于添加一个下拉框到菜单中。使用该属性,可以定制上下文菜单中的下拉框选项。

以下是使用ToolStripComboBox属性创建ContextMenuStrip控件的步骤:

  1. 将ContextMenuStrip控件添加到Winform中。

  2. 打开ContextMenuStrip的设计器,单击“Add New Item”按钮,添加一个新菜单项。

  3. 单击新菜单项,使其处于选中状态,然后打开属性窗口。

  4. 将ToolStripComboBox属性设置为“True”。

  5. 设置下拉框的选项,可以手动添加选项或使用数据绑定方式。

  6. 在代码中,使用SelectedIndexChanged事件处理程序来处理选项更改时的行为。

以下是示例代码:

// 添加一个ContextMenuStrip到Form中
ContextMenuStrip contextMenuStrip = new ContextMenuStrip();
this.ContextMenuStrip = contextMenuStrip;

// 添加一个新的菜单项
ToolStripMenuItem toolStripMenuItem = new ToolStripMenuItem();
toolStripMenuItem.Text = "下拉框菜单项";
contextMenuStrip.Items.Add(toolStripMenuItem);

// 设置ToolStripComboBox属性为True
toolStripMenuItem.DropDown = new ToolStripDropDown();
ToolStripComboBox toolStripComboBox = new ToolStripComboBox();
toolStripComboBox.Items.Add("选项1");
toolStripComboBox.Items.Add("选项2");
toolStripComboBox.Items.Add("选项3");
toolStripMenuItem.DropDown.Items.Add(toolStripComboBox);
toolStripMenuItem.DropDownOpening += new System.ComponentModel.CancelEventHandler(toolStripMenuItem_DropDownOpening);

// 处理选项更改的事件
private void toolStripComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
    ToolStripComboBox toolStripComboBox = (ToolStripComboBox)sender;
    string selectedItem = toolStripComboBox.Text;
    MessageBox.Show("你选择了:" + selectedItem);
}

在这里插入图片描述

🦋1.3 ToolStripSeparator

ContextMenuStrip控件ToolStripSeparator属性可以用于在ContextMenuStrip控件中添加分隔符。

在Winform窗体设计器中可以通过以下步骤添加分隔符:

  1. 在ContextMenuStrip控件中添加一个新的ToolStripSeparator控件。
  2. 设置ToolStripSeparator控件的属性,例如Name、Text、Enabled等。
  3. 将ToolStripSeparator控件与其他菜单项控件分组,使其在菜单中以正确的顺序显示。

代码示例如下:

// 创建ContextMenuStrip控件
ContextMenuStrip contextMenuStrip1 = new ContextMenuStrip();

// 添加菜单项
ToolStripMenuItem item1 = new ToolStripMenuItem("菜单项1");
ToolStripMenuItem item2 = new ToolStripMenuItem("菜单项2");

// 添加分隔符
ToolStripSeparator separator = new ToolStripSeparator();

// 将菜单项和分隔符添加到ContextMenuStrip控件中
contextMenuStrip1.Items.AddRange(new ToolStripItem[] { item1, separator, item2 });

运行程序后,右键单击控件时将显示菜单,其中菜单项和分隔符将依次显示。

在这里插入图片描述

🦋1.4 ToolStripTextBox

ContextMenuStrip控件是Winform中常用的右键菜单控件,其中包含了一些常用的菜单项,如剪切、复制、粘贴、删除等。而ToolStripTextBox属性则是在ContextMenuStrip控件中添加一个可编辑的文本框。以下是利用ToolStripTextBox属性在ContextMenuStrip控件中添加文本框的步骤:

  1. 在Visual Studio中,打开Windows Form应用程序,选择工具箱中的ContextMenuStrip控件。
  2. 将ContextMenuStrip控件拖放到主界面中。
  3. 在ContextMenuStrip控件的属性窗口中,选择Items属性,并添加一个ToolStripTextBox项。
  4. 在ToolStripTextBox项的属性窗口中,可以修改文本框的基本属性,如名称、提示信息、默认值等。
  5. 在代码中,可以通过以下方式访问ToolStripTextBox的值:
string text = contextMenuStrip1.Items["toolStripTextBox1"].Text;

其中,contextMenuStrip1是ContextMenuStrip控件的名称,toolStripTextBox1是ToolStripTextBox项的名称。

通过使用ToolStripTextBox属性,我们可以在右键菜单中添加一个用户可编辑的文本框,方便用户进行输入或编辑。

🔎2.常用场景

ContextMenuStrip控件通常用于实现右键菜单功能,它可以在用户右键单击控件或窗体时显示一个下拉菜单。在Winform中,ContextMenuStrip控件常用于以下场景:

  1. 在TreeView、ListView、DataGridView等控件中,右键菜单可以提供一些常用的操作,如添加、编辑、删除等。

  2. 在绘图工具中,右键菜单可以提供绘图工具的选项,如画笔颜色、线条宽度等。

  3. 在文本编辑器中,右键菜单可以提供一些文本操作,如复制、粘贴、剪切等。

  4. 在应用程序中,右键菜单可以提供一些设置选项,如更改主题、修改语言等。

🔎3.具体案例

下面是一个Winform中使用ContextMenuStrip控件的具体案例:

假设我们有一个ListView控件,其中包含一些项目。当用户右键单击其中一个项目时,会弹出一个ContextMenuStrip控件,其中包含一些操作项,例如“删除”和“复制”。

  1. 在Visual Studio中创建一个Windows Forms应用程序。

  2. 在窗体上添加一个ListView控件,并添加一些项目(可以通过代码或在设计器中手动添加)。

  3. 右键单击ListView控件,选择“添加上下文菜单”选项,这将在表单上添加一个ContextMenuStrip控件。

  4. 双击ContextMenuStrip控件以打开设计器。添加两个ToolStripMenuItem控件,一个以“删除”为文本,另一个以“复制”为文本。

  5. 右键单击第一个ToolStripMenuItem控件,选择“属性”选项。在“事件”选项卡中,双击“Click”事件以创建一个事件处理程序。在事件处理程序中编写代码以删除选定的ListView项目。例如:

private void deleteToolStripMenuItem_Click(object sender, EventArgs e)
{
    foreach (ListViewItem item in listView1.SelectedItems)
    {
        listView1.Items.Remove(item);
    }
}
  1. 右键单击第二个ToolStripMenuItem控件,选择“属性”选项。在“事件”选项卡中,双击“Click”事件以创建一个事件处理程序。在事件处理程序中编写代码以将选定的ListView项目复制到剪贴板。例如:
private void copyToolStripMenuItem_Click(object sender, EventArgs e)
{
    StringBuilder sb = new StringBuilder();

    foreach (ListViewItem item in listView1.SelectedItems)
    {
        sb.AppendLine(item.Text);
    }

    Clipboard.SetText(sb.ToString());
}
  1. 右键单击ListView控件,选择“属性”选项。在“事件”选项卡中,双击“MouseClick”事件以创建一个事件处理程序。在事件处理程序中编写代码以检查单击是否是鼠标右键单击,并显示ContextMenuStrip控件。例如:
private void listView1_MouseClick(object sender, MouseEventArgs e)
{
    if (e.Button == MouseButtons.Right)
    {
        contextMenuStrip1.Show(Cursor.Position);
    }
}

现在,当用户右键单击ListView项目时,将显示ContextMenuStrip控件,其中包含“删除”和“复制”选项。用户可以选择其中一个选项,并执行相应的操作。


🚀感谢:给读者的一封信

亲爱的读者,

我在这篇文章中投入了大量的心血和时间,希望为您提供有价值的内容。这篇文章包含了深入的研究和个人经验,我相信这些信息对您非常有帮助。

如果您觉得这篇文章对您有所帮助,我诚恳地请求您考虑赞赏1元钱的支持。这个金额不会对您的财务状况造成负担,但它会对我继续创作高质量的内容产生积极的影响。

我之所以写这篇文章,是因为我热爱分享有用的知识和见解。您的支持将帮助我继续这个使命,也鼓励我花更多的时间和精力创作更多有价值的内容。

如果您愿意支持我的创作,请扫描下面二维码,您的支持将不胜感激。同时,如果您有任何反馈或建议,也欢迎与我分享。

在这里插入图片描述

再次感谢您的阅读和支持!

最诚挚的问候, “愚公搬代码”

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。