当使用MDI技术时,为了美观或者什么原因可能需要合并工具栏。方法如下(http://blog.csdn.net/zyc21st/archive/2007/04/21/1573921.aspx):
在MDI窗体定义
public interface ICipherInputForm
{
ToolStrip CipherToolStrip
{
get;
}
}
在MdiChildActivate事件中加入
private void MainFrame_MdiChildActivate(object sender, EventArgs e)
{
//CTools为MDI窗体工具栏
ToolStripManager.RevertMerge(CTools);
if (this.ActiveMdiChild != null)
{
if ((ActiveMdiChild as ICipherInputForm).CipherToolStrip != null)
{
ToolStripManager.Merge((ActiveMdiChild as ICipherInputForm).CipherToolStrip,CTools);
}
}
//若子窗体无工具栏时,隐藏该工具栏
if (CTools.Items.Count > 0)
CTools.Visible = true;
else
CTools.Visible = false;
}
在子窗体
public partial class FrmPowerTeam : Form,MainFrame.ICipherInputForm
{
//Tools为你子窗体的工具栏.注意将其Visible = false;
public ToolStrip CipherToolStrip
{
get
{
return Tools;
}
}
}
这里要注意一个问题,如果子窗体不止一种,每一种子窗体都要实现这个接口,否则在运行时就会报错,一般都提示
未处理的“System.OutOfMemoryException”类型的异常出现在 System.Windows.Forms.dll 中。
其他信息: 创建窗口句柄时出错。
这样的信息。只要使用的子窗体实现了ICipherInputForm这个接口,通常情况下应该不会出什么太大的问题。
以上仅代表个人见解,如果有什么问题欢迎随时讨论~