首页
学习
活动
专区
圈层
工具
发布
50 篇文章
1
【愚公系列】2023年11月 WPF控件专题 Line控件详解
2
【愚公系列】2023年11月 WPF控件专题 2023秋招WPF高频面试题
3
【愚公系列】2023年11月 Winform控件专题 Label控件详解
4
【愚公系列】2023年11月 Winform控件专题 Button控件详解
5
【愚公系列】2023年11月 Winform控件专题 Form控件详解
6
【愚公系列】2023年11月 Winform控件专题 TextBox控件详解
7
【愚公系列】2023年11月 Winform控件专题 CheckBox控件详解
8
【愚公系列】2023年11月 Winform控件专题 RadioButton控件详解
9
【愚公系列】2023年11月 Winform控件专题 ComboBox控件详解
10
【愚公系列】2023年11月 Winform控件专题 RichTextBox控件详解
11
【愚公系列】2023年11月 Winform控件专题 ListBox控件详解
12
【愚公系列】2023年11月 Winform控件专题 CheckedListBox控件详解
13
【愚公系列】2023年11月 Winform控件专题 numericUpDown控件详解
14
【愚公系列】2023年11月 Winform控件专题 LinkLabel控件详解
15
【愚公系列】2023年11月 Winform控件专题 DateTimePicker控件详解
16
【愚公系列】2023年11月 Winform控件专题 NotifyIcon控件详解
17
【愚公系列】2023年11月 Winform控件专题 ContextMenuStrip控件详解
18
【愚公系列】2023年11月 Winform控件专题 Timer控件详解
19
【愚公系列】2023年11月 Winform控件专题 PictureBox控件详解
20
【愚公系列】2023年11月 Winform控件专题 Chart控件详解
21
【愚公系列】2023年11月 Winform控件专题 DataGridView控件详解
22
【愚公系列】2023年11月 Winform控件专题 TableLayoutPanel控件详解
23
【愚公系列】2023年11月 Winform控件专题 ProgressBar控件详解
24
【愚公系列】2023年11月 Winform控件专题 Panel控件详解
25
【愚公系列】2023年11月 Winform控件专题 FlowLayoutPanel控件详解
26
【愚公系列】2023年11月 Winform控件专题 GroupBox控件详解
27
【愚公系列】2023年11月 Winform控件专题 SplitContainer控件详解
28
【愚公系列】2023年11月 Winform控件专题 TabControl控件详解
29
【愚公系列】2023年11月 Winform控件专题 ToolTip控件详解
30
【愚公系列】2023年11月 Winform控件专题 MaskedTextBox控件详解
31
【愚公系列】2023年11月 Winform控件专题 MonthCalendar控件详解
32
【愚公系列】2023年11月 Winform控件专题 TreeView控件详解
33
【愚公系列】2023年11月 Winform控件专题 MenuStrip控件详解
34
【愚公系列】2023年11月 Winform控件专题 OpenFileDialog控件详解
35
【愚公系列】2023年11月 Winform控件专题 SaveFileDialog控件详解
36
【愚公系列】2023年12月 Winform控件专题 FontDialog控件详解
37
【愚公系列】2023年12月 Winform控件专题 ColorDialog控件详解
38
【愚公系列】2023年12月 Winform控件专题 FolderBrowserDialog控件详解
39
【愚公系列】2023年12月 Winform控件专题 StatusStrip控件详解
40
【愚公系列】2023年12月 Winform控件专题 ToolStrip控件详解
41
【愚公系列】2023年12月 Winform控件专题 HelpProvider控件详解
42
【愚公系列】2023年12月 Winform控件专题 ToolStripContainer控件详解
43
【愚公系列】2023年12月 Winform控件专题 BackgroundWorker控件详解
44
【愚公系列】2023年12月 GDI+绘图专题 图形图像编程基础
45
【愚公系列】2023年12月 GDI+绘图专题 图形图像的重绘
46
【愚公系列】2023年12月 GDI+绘图专题 颜色获取和图形绘制
47
【愚公系列】2023年12月 GDI+绘图专题 Point
48
【愚公系列】2023年12月 GDI+绘图专题 Rectangle
49
【愚公系列】2023年12月 GDI+绘图专题 Matrix
50
【愚公系列】2023年12月 GDI+绘图专题 Pen

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

🏆 作者简介,愚公搬代码 🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,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. 在代码中为控件添加菜单项和子菜单项,如下所示:
代码语言:c#
复制
// 创建一个菜单项
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,如下所示:
代码语言:c#
复制
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事件中添加如下代码:
代码语言:c#
复制
private void toolStripMenuItem1_Click(object sender, EventArgs e)
{
    Clipboard.SetText("复制的文本内容");
}
  1. 在toolStripMenuItem2的Click事件中添加如下代码:
代码语言:c#
复制
private void toolStripMenuItem2_Click(object sender, EventArgs e)
{
    textBox1.Text = Clipboard.GetText();
}
  1. 最后,在按钮的MouseDown事件中添加如下代码:
代码语言:c#
复制
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事件处理程序来处理选项更改时的行为。

以下是示例代码:

代码语言:c#
复制
// 添加一个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控件与其他菜单项控件分组,使其在菜单中以正确的顺序显示。

代码示例如下:

代码语言:c#
复制
// 创建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的值:
代码语言:c#
复制
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项目。例如:
代码语言:c#
复制
private void deleteToolStripMenuItem_Click(object sender, EventArgs e)
{
    foreach (ListViewItem item in listView1.SelectedItems)
    {
        listView1.Items.Remove(item);
    }
}
  1. 右键单击第二个ToolStripMenuItem控件,选择“属性”选项。在“事件”选项卡中,双击“Click”事件以创建一个事件处理程序。在事件处理程序中编写代码以将选定的ListView项目复制到剪贴板。例如:
代码语言:c#
复制
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控件。例如:
代码语言:c#
复制
private void listView1_MouseClick(object sender, MouseEventArgs e)
{
    if (e.Button == MouseButtons.Right)
    {
        contextMenuStrip1.Show(Cursor.Position);
    }
}

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


我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

下一篇
举报
领券