如何更改menustrip的保护级别,以便我可以使用menustrip不是其他形式的代码

时间:2015-05-19 11:23:48

标签: c# forms winforms menustrip

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

我被困在这里的代码....我想知道如何访问我的另一种形式的menustrip从另一种形式。

E.G:

我希望点击menustrip不存在的其他形式的menustrip。

以下是代码:

表格1

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

表格Home是“frm”变量,它是菜单条的地方。我希望帮助更改保护级别,以便此表单(Form1)可以接受此代码......任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

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

todasEntradasToolStripMenuItem.Click += todasEntradasToolStripMenuItem_Click;

同样在Home中,您可以定义一个新事件:

    public event EventHandler<EventArgs> TodasEntradasToolStripMenuItemClick;

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

在Click处理程序中,您可以引发自己的公共事件:

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

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

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

在这个处理程序中,你可以“做点什么”:

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

解决方案2(不要这样做): 您要求更改保护级别。所以你可以改变

private todasEntradasToolStripMenuItem

in Home to

internal todasEntradasToolStripMenuItem

甚至

public todasEntradasToolStripMenuItem

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