好用的ToolStripManager类
生活随笔
收集整理的這篇文章主要介紹了
好用的ToolStripManager类
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
學(xué)習(xí)筆記,轉(zhuǎn)載請(qǐng)注明出處!
運(yùn)用ToolStripManager可以實(shí)現(xiàn)ToolStrip工具條的合并,下面是多文檔應(yīng)用程序開(kāi)發(fā)中將文檔子窗體的菜單和工具條合并到父窗體中用的的部分代碼!合并,需要父窗體有ToolStripPanel和ToolStrip。MenuStrip是ToolStrip的子類(lèi),當(dāng)然也可以實(shí)現(xiàn)合并了!這個(gè)類(lèi)的使用需要好好揣摩學(xué)習(xí)。
1 protected override void OnMdiChildActivate(EventArgs e)2 {
3 DocumentForm olddocument = m_activeDocument;
4 base.OnMdiChildActivate(e);
5 m_activeDocument = this.ActiveMdiChild as DocumentForm;
6 foreach (Control ctrl in Controls)
7 {
8 if (ctrl is ToolStripPanel)
9 ((ToolStripPanel)ctrl).SuspendLayout();
10 }
11 if (m_activeDocument != null)
12 {
13 ToolStripManager.RevertMerge(m_menuItems.GetStrip("edit"));
14 ToolStripManager.RevertMerge(m_menuItems.GetStrip("draw"));
15 ToolStripManager.RevertMerge(m_menuItems.GetStrip("layer"));
16 ToolStripManager.RevertMerge(m_menuItems.GetStrip("status"));
17 ToolStripManager.RevertMerge(m_menuItems.GetStrip("modify"));
18 ToolStripManager.Merge(m_activeDocument.GetToolStrip("draw"), m_menuItems.GetStrip("draw"));
19 ToolStripManager.Merge(m_activeDocument.GetToolStrip("edit"), m_menuItems.GetStrip("edit"));
20 ToolStripManager.Merge(m_activeDocument.GetToolStrip("layer"), m_menuItems.GetStrip("layer"));
21 ToolStripManager.Merge(m_activeDocument.GetToolStrip("status"), m_menuItems.GetStrip("status"));
22 ToolStripManager.Merge(m_activeDocument.GetToolStrip("modify"), m_menuItems.GetStrip("modify"));
23 }
24 foreach (Control ctrl in Controls)
25 {
26 if (ctrl is ToolStripPanel)
27 ((ToolStripPanel)ctrl).ResumeLayout();
28 }
29 }
個(gè)人學(xué)習(xí)示例結(jié)果:
1 protected override void OnMdiChildActivate(EventArgs e)2 {
3 base.OnMdiChildActivate(e);
4 foreach (Control ctrl in Controls)
5 {
6 if (ctrl is ToolStripPanel)
7 ((ToolStripPanel)ctrl).SuspendLayout();
8 }
9 if (this.ActiveMdiChild != null && this.Disposing==false) // 修改前代碼為if (this.ActiveMdiChild != null )
10 {
11 bool res= ToolStripManager.RevertMerge(m_MapViewTools);
12 ToolStripManager.RevertMerge(m_SceneViewTools);
13 bool res2=ToolStripManager.Merge(m_MapView.BasicMapTools,m_MapViewTools );
14 ToolStripManager.Merge(m_SceneView.BasicSceneTools, m_SceneViewTools);
15 //MessageBox.Show(res2.ToString());
16 if (this.ActiveMdiChild.Name == "MapControlView")
17 {
18 m_MapView.EnableAllTools();
19 m_SceneView.DisableAllTools();
20 m_Explorer.axTOCControl1.SetBuddyControl(m_MapView.MyMapControl);//報(bào)錯(cuò)處
21
22
23 }
24 else if (this.ActiveMdiChild.Name == "SceneControlView")
25 {
26 m_MapView.DisableAllTools();
27 m_SceneView.EnableAllTools();
28 m_Explorer.axTOCControl1.SetBuddyControl(m_SceneView.MySceneControl);
29 }
30 }
31
32 foreach (Control ctrl in Controls)
33 {
34 if (ctrl is ToolStripPanel)
35 ((ToolStripPanel)ctrl).ResumeLayout();
36 }
37 }
????(1???? (2
其他:在關(guān)閉父窗體的時(shí)候報(bào)錯(cuò)“COM 對(duì)象與其基礎(chǔ) RCW 分開(kāi)后就不能再使用。”這句話(huà)倒很好理解,但是到底什么原因?個(gè)人猜想是TOC窗體先銷(xiāo)毀,然后銷(xiāo)毀Map和Scene視圖所致!所以修改了代碼,增加了主窗體是否銷(xiāo)毀中?if (this.ActiveMdiChild != null && this.Disposing==false) 。
總結(jié)
以上是生活随笔為你收集整理的好用的ToolStripManager类的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: API-MS-WIN-CRT-RUNTI
- 下一篇: 服务器防黑策略