如何更改菜单条的保护级别,以便我可以在不是菜单条的情况下以其他形式进行编码

How to change protection level of menustrip so I can code in other form where menustrip isn't it

编辑:如果我将 Home Form private 更改为 public void,那么我必须做一些从 void 转换为 bool 的事情...但我不知道它是如何工作的。你们能帮帮我吗?

我被困在代码中....我想知道如何访问我的另一个表单,该表单具有来自另一个表单的菜单条。

例如:

我希望从不存在菜单条的其他表单中单击菜单条。

代码如下:

表格 1

Home frm = new Home();
frm.IsMdiContainer = true;
if(frm.Controls["todasEntradasToolStripMenuItem"].Click += frm.todasEntradasToolStripMenuItem_Click)
       {
            {something}
       }

Home 表单是 "frm" 变量,它是菜单条所在的位置。我需要帮助更改保护级别,以便此表单 (Form1) 可以接受此代码...有人可以帮我吗?

解决方案 1(很好): 在某些 Init 方法或 Home 中的构造函数中添加您的 Click 事件。在那里你可以访问你的控件。

todasEntradasToolStripMenuItem.Click += todasEntradasToolStripMenuItem_Click;

同样在主页中您定义了一个新事件:

    public event EventHandler<EventArgs> TodasEntradasToolStripMenuItemClick;

    private void OnTodasEntradasToolStripMenuItemClick(EventArgs e)
    {
        if (todasEntradasToolStripMenuItem != null)
        {
            TodasEntradasToolStripMenuItemClick(this, e);
        }
    }

在您引发自己的 public 事件的点击处理程序中:

    private void todasEntradasToolStripMenuItem_Click(object sender, System.EventArgs e)
    {
        OnTodasEntradasToolStripMenuItemClick(e);
    }

在 Form1 中,您将处理程序添加到此 public 事件:

        Home frm = new Home();
        frm.TodasEntradasToolStripMenuItemClick += frm_TodasEntradasToolStripMenuItemClick;

在此处理程序中,您可以 "do something":

    private void frm_TodasEntradasToolStripMenuItemClick(object sender, EventArgs e)
    {
        // Do something
    }

方案二(不做): 您要求更改保护级别。所以你可以改变

private todasEntradasToolStripMenuItem

在家

internal todasEntradasToolStripMenuItem

甚至

public todasEntradasToolStripMenuItem

但我不建议你不要这样做。您应该选择解决方案 1。如果使用解决方案 2,您将打开主页进行更多更改。