标签: contextmenustrip

如何禁用ContextMenuStrip中的菜单项?

我在ContextMenuStrip中有"添加","删除"和"更新"等选项,当用户右键单击ListView时会弹出这些选项.

如果列表视图中没有项目,如何禁用"更新"菜单?

.net c# contextmenustrip winforms

6
推荐指数
2
解决办法
4499
查看次数

C# DataGridView 右键单击​​上下文菜单单击检索单元格值

我有一个 DataGridView。当右键单击 DataGridView 第 4 列中的单元格时,我创建了一个 ContextMenuStrip。然而,我陷入困境,因为在左侧单击 ContextMenuStrip 菜单项时,我希望从右键单击的单元格中提取数据。

我想要的单元格位于 ContextMenuStrip 的左上角,这正是我右键单击并指向我想要抓取的数据的单元格的位置。 屏幕抓取不显示鼠标光标。

这是我到目前为止所拥有的:

GridView1.MouseDown += new MouseEventHandler(this.dataGridView_MouseDown);

private void dataGridView_MouseDown(object sender, MouseEventArgs e)
    {

        if (e.Button == MouseButtons.Right)
        {
            var ht = dataGridView1.HitTest(e.X, e.Y);

            //Checks for correct column index
            if (ht.ColumnIndex == 4 && ht.RowIndex != -1)
            {
                //Create the ContextStripMenu for Creating the PO Sub Form
                ContextMenuStrip Menu = new ContextMenuStrip();
                ToolStripMenuItem MenuOpenPO = new ToolStripMenuItem("Open PO");
                MenuOpenPO.MouseDown += new MouseEventHandler(MenuOpenPO_Click);
                Menu.Items.AddRange(new ToolStripItem[] { MenuOpenPO });

                //Assign created …
Run Code Online (Sandbox Code Playgroud)

c# datagridview contextmenustrip

5
推荐指数
1
解决办法
2万
查看次数

从 C# 中的子上下文菜单项访问时,源代码控制为空

当他们从上下文菜单条中单击子菜单项(颜色>红色)时,我试图更改按钮的颜色。

该代码附加到用户定义的按钮数量。为了弄清楚他们试图更改哪个按钮,我尝试从子项目转到源代码管理,如下所示:发送者>所有者工具条>所有者菜单>源代码管理。

我的代码:

private void redToolStripMenuItem_Click(object sender, EventArgs e)
{
    var subItem = sender as ToolStripItem;
    if (subItem == null) 
        return;

    var mainItem = subItem.OwnerItem as ToolStripItem;
    if (mainItem == null) 
        return;

    var menuStrip = mainItem.Owner as ContextMenuStrip;
    if (menuStrip == null) 
        return;

    var dataGridView = menuStrip.SourceControl as DataGridView;
    if (dataGridView == null) 
        return; //null here

    MessageBox.Show(dataGridView.Name);
}
Run Code Online (Sandbox Code Playgroud)

根据我在谷歌上发现的信息,这似乎是一个错误。有没有解决方法?

c# version-control contextmenustrip

5
推荐指数
0
解决办法
1190
查看次数

C# - 当用户点击箭头键时,上下文菜单条具有滚动行为

我有一个上下文菜单条带有8个项目和两个分隔符.当用户调出上下文菜单条时,然后按箭头键滚动项目,点击第八项使菜单"向上滚动",在底部留下空白区域.有没有办法阻止这种行为?

c# contextmenustrip

4
推荐指数
1
解决办法
3261
查看次数

如何识别右键单击ContextMenuStrip的dataGridView单元格?

用户右键单击DGV中的单元格,然后在ContextMenuStrip中进行选择.基于他们的CMS选择,我想做点什么(复制,隐藏,过滤).我的问题是识别右键单击的单元格.

我试图使用以下方法处理此方案,但无法引用[ColumnIndex].

private void cmsDataGridView_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
    {
        switch (e.ClickedItem.Text)
        {
            case "Copy":
                break;
            case "Filter On":
                break;
            case "Hide Column":
                DataGridViewBand band = dataGridView1.Columns[e.ColumnIndex];
                band.Visible = false;
                break;
        }
    }
Run Code Online (Sandbox Code Playgroud)

我应该用两种不同的方法吗?一个处理鼠标点击(然后我可以捕获DGV列索引),然后从那里,我调用CMS项目点击事件?

谢谢你的帮助,Brian.


适合我的代码.哦,我必须从设计器中的dataGridView的ContextMenuStrip属性中删除cmsDataGridView方法.离开那里会引起问题.

            // Identify the cell clicked for cmsDataGridView
    DataGridViewCell clickedCell;
    private void dataGridView1_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
    {
        try
        {
            if (e.Button == MouseButtons.Right)
            {
                dataGridView1.ClearSelection();
                clickedCell = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];
                clickedCell.Selected = true;
                cmsDataGridView.Show(dataGridView1, e.Location);
            }

        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message + Environment.NewLine + ex.StackTrace);
        }
    } …
Run Code Online (Sandbox Code Playgroud)

c# datagridview visual-studio-2010 contextmenustrip

4
推荐指数
1
解决办法
1万
查看次数

如何停止ContextMenuStrip中的项目特别处理&符号?

我有一个ContextMenuStrip显示可由用户命名的项目; 允许用户提供包含&符号的项目名称.当ContextMenuStrip显示时,项目'将&符号视为转义序列,并为下一个字符加下划线.

在设置项目Text成员之前,我可以将所有&符号加倍,但该成员在代码中的其他地方使用,所以如果可能的话,我想停止ContextMenuStrip特别处理&符号.有没有办法扭转这种行为?

c# contextmenustrip winforms

3
推荐指数
1
解决办法
1896
查看次数

ContextMenuStrip 和鼠标滚轮

我有一个包含许多项目的 ContextMenuStrip。

如何处理鼠标滚轮滚动项目?

我在网上搜索,但没有找到有用的。

或者如何从上下文菜单中获取第一个/最后一个显示/可见的项目?

c# mousewheel contextmenustrip winforms

3
推荐指数
2
解决办法
2002
查看次数

有没有办法将ContextMenuStrip分配给ListViewItem?

我想将相同的ContextMenuStrip分配给表单上的所有ListViewItems.这些ListViewItems是动态创建的.

不幸的是,似乎ListViewItems没有可以分配的ContextMenuStrip属性(当然,ListView本身也是如此).

我是否必须将ContextMenuStrip分配给ListView,然后根据ListView当前选择的项目从那里开始?

c# listview contextmenustrip listviewitem winforms

3
推荐指数
1
解决办法
3178
查看次数

datagridview contextmenustrip:仅显示所选行?

我有标准的datagridview,我有contextmenustrip.我的问题是当用户单击鼠标右键而不是每行时我需要显示这个contextmenustrip!只在我选择的行上.我试过这个:

dataGridView1.Rows[1].ContextMenuStrip = contextMenuStrip1;
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

c# datagridview contextmenustrip

3
推荐指数
1
解决办法
3839
查看次数

如何将ContextMenuStrip附加到NotifyIcon

我正在尝试NotifyIcon显示一个上下文菜单,即使用鼠标左键单击它也是如此.我可以在图标的MouseDown事件中将其显示在正确的位置:

sysTrayIcon.ContextMenuStrip = TrayContextMenu
If e.Button = MouseButtons.Left Then TrayContextMenu.Show()
Run Code Online (Sandbox Code Playgroud)

但是因为sysTrayIcon当我左键单击时未指定为控件,如果我在菜单外单击或按下转义,则不会从屏幕上清除.

我知道通常的方法是使用菜单的重载Show(control, location)方法,但这引发了这个错误:

Value of type 'System.Windows.Forms.NotifyIcon' cannot be converted to 'System.Windows.Forms.Control'.
Run Code Online (Sandbox Code Playgroud)

那么如何将菜单附加到通知图标呢?

.net vb.net notifyicon contextmenustrip

3
推荐指数
1
解决办法
1804
查看次数