编辑:如果我将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)可以接受此代码......任何人都可以帮助我吗?
答案 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以进行更多更改。