通过实现上下文菜单 c# winforms 重命名复选框

本文关键字:winforms 重命名 复选框 菜单 实现 上下文 | 更新日期: 2023-09-27 18:34:17

我在面板上设置了一组动态创建的复选框,并且还在所有复选框上实现了ContextMenuStrip。我无法检测到哪个控件当前显示上下文菜单条中定义的快捷菜单。

通过实现上下文菜单 c# winforms 重命名复选框

我已经得到了答案。

private void MenuViewDetails_Click(object sender, EventArgs e)    
{    
    // Try to cast the sender to a MenuItem    
    MenuItem menuItem = sender as MenuItem;    
    if (menuItem != null)    
    {    
        // Retrieve the ContextMenu that contains this MenuItem    
        ContextMenu menu = menuItem.GetContextMenu();    
        // Get the control that is displaying this context menu    
        Control sourceControl = menu.SourceControl;    
    }
}

使用 SourceControl() 属性。

使用上下文菜单:

    private void menuItem1_Click(object sender, EventArgs e)
    {
        CheckBox cb = (CheckBox)contextMenu1.SourceControl;
        Console.WriteLine(cb.Name);
    }

使用上下文菜单条:

    private void renameToolStripMenuItem_Click(object sender, EventArgs e)
    {
        CheckBox cb = (CheckBox)contextMenuStrip1.SourceControl;
        Console.WriteLine(cb.Name);
    }