鼻炎鼻塞怎么快速通气:MDIForm 工具栏 与子窗口 工具栏 合并

来源:百度文库 编辑:九乡新闻网 时间:2024/05/06 06:46:17
MDIForm 工具栏 与子窗口 工具栏 合并 2008-03-20 21:34

http://www.cnitblog.com/MartinYao/archive/2007/08/01/31114.html

在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;
}
}
}

这种思路很好,就是代码中命名及代码风格太随意。

这么简单的解决方案,却并不是所有的人都是这么用的。

http://topic.csdn.net/t/20020917/10/1029781.html

不能想菜单一样直接合并. 不过有一些变通的方法:

1)定义两个toolbar,一个给主窗口用,另一个上面的内容是主窗口加子窗口,打开子窗口时,第一个隐藏,第二个显示. 关闭子窗口,反之.

2)定义两个toolbar,一个给主窗口用,另一个给子窗口用.打开子窗口时,显示两个.

我自己也干过类似的傻事,在父窗体里面,把子窗体的实例定义为全局变量,然后通过这个全局变量来调用子窗口中public的方法,用完之后觉得很恶心,然而没有别的思路,也就继续恶心着了。

看到这种解决方案,我长出了一口恶气。