SharpDevelop开发教程(二)

  第二章    View

View(视图)是SD的基础部分,View通常包含编辑器,如代码编辑器,资源编辑器。基本上,它是显示于MPI窗口选项卡页面上的面板。

    制作View要从AbstractViewContent继承下来。下面就进入我们的实战操作流程,首先新建一个类库行的项目,SDViewDemoPlug,把Class1.cs改名为Main.cs,修改为如下内容:

 1 None.gif using  System;
 2 None.gif using  ICSharpCode.Core.AddIns;
 3 None.gif using  ICSharpCode.Core.AddIns.Codons;
 4 None.gif
 5 None.gif using  ICSharpCode.SharpDevelop.Gui;
 6 None.gif
 7 None.gif namespace  SDViewDemoPlug
 8 ExpandedBlockStart.gifContractedBlock.gif dot.gif {
 9InBlock.gif    public class ShowViewCommand : AbstractMenuCommand
10ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
11InBlock.gif        public override void Run()
12ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{            
13InBlock.gif            WorkbenchSingleton.Workbench.ShowView(new SDViewContent());
14ExpandedSubBlockEnd.gif        }

15ExpandedSubBlockEnd.gif    }

16ExpandedBlockEnd.gif}

添加一个新类, SDViewContent ,文件名为 SDViewContent.cs ,修改内容如下:

 1 None.gif using  System;
 2 None.gif using  System.Drawing;
 3 None.gif using  System.Windows.Forms;
 4 None.gif using  ICSharpCode.SharpDevelop.Gui;
 5 None.gif
 6 None.gif namespace  SDViewDemoPlug
 7 ExpandedBlockStart.gifContractedBlock.gif dot.gif {
 8InBlock.gif    public class SDViewContent : AbstractViewContent
 9ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
10InBlock.gif        SDViewControl p=new SDViewControl();
11InBlock.gif        public override Control Control 
12ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
13ExpandedSubBlockStart.gifContractedSubBlock.gif            get dot.gif{return p;}
14ExpandedSubBlockEnd.gif        }

15InBlock.gif        
16InBlock.gif        public override bool IsReadOnly 
17ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
18ExpandedSubBlockStart.gifContractedSubBlock.gif            get dot.gif{return false;}
19ExpandedSubBlockEnd.gif        }

20InBlock.gif        
21ExpandedSubBlockStart.gifContractedSubBlock.gif        public override void Save(string fileName)dot.gif{}
22ExpandedSubBlockStart.gifContractedSubBlock.gif        public override void Load(string fileName)dot.gif{}
23ExpandedSubBlockStart.gifContractedSubBlock.gif        public override void RedrawContent()dot.gif{}
24InBlock.gif        
25InBlock.gif        public override void Dispose()
26ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{        
27InBlock.gif            p.Dispose();
28ExpandedSubBlockEnd.gif        }

29InBlock.gif        
30InBlock.gif        public SDViewContent()
31ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
32InBlock.gif            TitleName = "TestView";            
33ExpandedSubBlockEnd.gif        }
        
34InBlock.gif        
35ExpandedSubBlockEnd.gif    }

36ExpandedBlockEnd.gif}

37 None.gif

 

在项目中添加新建项à用户控件。改名为SDViewControl各位可以在SDViewControl上添加一些相关的内容。最后添加插件配置文件ViewDemoPlug.addin,内容如下:

None.gif < AddIn  name         = "SharpDevelop Plug Demo"
None.gif       author      
= "SongYuanWu"
None.gif       copyright   
= "GPL"
None.gif       url         
= "http://www.cnblogs.com/CBuilder"
None.gif       description 
= "SharpDevelop"
None.gif       version     
= "1.0.0" >
None.gif    
None.gif    
< Runtime >
None.gif        
< Import  assembly ="SDViewDemoPlug.dll" />
None.gif    
</ Runtime >
None.gif
None.gif    
< Extension  path  = "/SharpDevelop/Workbench/MainMenu/Tools" >
None.gif        
< MenuItem  id  = "SDViewDemo"                  
None.gif                 label 
= "ShowMyView"  
None.gif                 class 
= "SDViewDemoPlug.ShowViewCommand" />
None.gif    
</ Extension >
None.gif
</ AddIn >
None.gif

 

还有不要忘记把ICSharpCode.Core.dllSharpDevelop.Base.dll引用进项目中来。编译后把ViewDemoPlug.addinSDViewDemoPlug.dll拷贝到SD\AddIns\目录下。运行SD,就可以看到在工具菜单下出现了ShowMyView菜单项。ClickShowMyView菜单项后显示如图,再clickShowMyView菜单项后就会又显示一个TestView。各位如果问:“需要做象“启动页”一样的View,如果已经有打开的了就会激活打开的View该如何处理呢?”。其实很简单,你可以把ShowViewCommand类中的Run函数更改为:
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

None.gif foreach  (IViewContent view  in  WorkbenchSingleton.Workbench.ViewContentCollection) 
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif {
InBlock.gif        
if (view is SDViewContent) 
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            view.WorkbenchWindow.SelectWindow();                    
InBlock.gif            
return;
ExpandedSubBlockEnd.gif        }

ExpandedBlockEnd.gif    }
            
None.gif    WorkbenchSingleton.Workbench.ShowView(
new  SDViewContent());
None.gif



View.JPG

Demo演示了如何在SD添加一个View,同时也演示了如何在SD中更改菜单项。每添加一个菜单项时都要继承一个AbstractMenuCommand,并且改写Run()函数,当然你的XXXCommand也可以从SDAbstractCommand继承,但要实现IMenuCommand接口。因为添加菜单项和添加工具条按钮比较简单,在以后的内容中我会一起讲,在此我就不多说了。

转载于:https://www.cnblogs.com/CBuilder/archive/2005/08/06/209053.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值