鼻炎鼻塞怎么快速通气:MDIForm 工具栏 与子窗口 工具栏 合并
来源:百度文库 编辑:九乡新闻网 时间:2024/05/06 06:46:17
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的方法,用完之后觉得很恶心,然而没有别的思路,也就继续恶心着了。
看到这种解决方案,我长出了一口恶气。