首页 > 解决方案 > 如何更改 groupBox.Text?

问题描述

如何将 groupBox.Text 更改为选择工具条菜单项的值/文本...如何检查用户单击了哪个以及如何获取菜单项的“.text”以将其传输到groupBox.text 的变量或权限。

现在我一直在使用“点击”事件并手动设置它,但我确定有一种方法可以自动执行此操作。 .我只是找不到它。

我将第一个设置为默认...

标签: c#winforms

解决方案


如果这只是 1 级菜单,您可以使用ItemClicked如下事件:

private void menuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
    {
        Console.WriteLine(e.ClickedItem.Text);
    }

您还可以像这样遍历菜单项:

foreach (ToolStripMenuItem tsi in menuStrip1.Items)
        {
            tsi.Click += (sender, args) =>
                {
                    var currentMenuItem = (ToolStripMenuItem) sender;
                    Console.WriteLine(currentMenuItem.Text);
                };
        }

同样,这仅适用于第一级。如果你想通过所有级别,那么你将需要递归。在这里您可以查看以下示例menuStrip1

public Form1()
    {
        InitializeComponent();
        foreach (ToolStripMenuItem tsi in menuStrip1.Items)
        {
            IterateMenu(tsi);
        }
    }

    private void IterateMenu(ToolStripMenuItem currentMenuItem)
    {
        Console.WriteLine($"Assigning {currentMenuItem.Text}");
        currentMenuItem.Click += ClickEvent;
        if (currentMenuItem.HasDropDownItems)
        {
            foreach (ToolStripMenuItem tsi in currentMenuItem.DropDownItems)
            {
                IterateMenu(tsi);
            }
        }
    }

    private void ClickEvent(object sender, EventArgs args)
    {
        var currentMenuItem = (ToolStripMenuItem)sender;
        Console.WriteLine(currentMenuItem.Text);
    }

为了满足您的要求,请更改Console.WriteLine(currentMenuItem.Text);groupBox1.Text = currentMenuItem.Text;.

groupbox.Text编辑:这是在菜单项有子项时不会改变的版本:

    public Form1()
    {
        InitializeComponent();
        foreach (ToolStripMenuItem tsi in menuStrip1.Items)
        {
            IterateMenu(tsi);
        }
    }

    private void IterateMenu(ToolStripMenuItem currentMenuItem)
    {
        if (currentMenuItem.HasDropDownItems)
        {
            foreach (ToolStripMenuItem tsi in currentMenuItem.DropDownItems)
            {
                IterateMenu(tsi);
            }
        }
        else
        {
            currentMenuItem.Click += ClickEvent;
        }
    }

    private void ClickEvent(object sender, EventArgs args)
    {
        var currentMenuItem = (ToolStripMenuItem)sender;
        Console.WriteLine(currentMenuItem.Text);
    }

推荐阅读