SharpDevelop开发教程(二)
第二章 View
View(视图)是SD的基础部分,View通常包含编辑器,如代码编辑器,资源编辑器。基本上,它是显示于MPI窗口选项卡页面上的面板。
制作View要从AbstractViewContent继承下来。下面就进入我们的实战操作流程,首先新建一个类库行的项目,SDViewDemoPlug,把Class1.cs改名为Main.cs,修改为如下内容:
1
using System;
2
using ICSharpCode.Core.AddIns;
3
using ICSharpCode.Core.AddIns.Codons;
4![]()
5
using ICSharpCode.SharpDevelop.Gui;
6![]()
7
namespace SDViewDemoPlug
8
{
9
public class ShowViewCommand : AbstractMenuCommand
10
{
11
public override void Run()
12
{
13
WorkbenchSingleton.Workbench.ShowView(new SDViewContent());
14
}
15
}
16
}
using System;2
using ICSharpCode.Core.AddIns;3
using ICSharpCode.Core.AddIns.Codons;4

5
using ICSharpCode.SharpDevelop.Gui;6

7
namespace SDViewDemoPlug8
{9
public class ShowViewCommand : AbstractMenuCommand10
{11
public override void Run()12
{ 13
WorkbenchSingleton.Workbench.ShowView(new SDViewContent());14
}15
}16
}添加一个新类,SDViewContent,文件名为SDViewContent.cs,修改内容如下:
1
using System;
2
using System.Drawing;
3
using System.Windows.Forms;
4
using ICSharpCode.SharpDevelop.Gui;
5![]()
6
namespace SDViewDemoPlug
7
{
8
public class SDViewContent : AbstractViewContent
9
{
10
SDViewControl p=new SDViewControl();
11
public override Control Control
12
{
13
get {return p;}
14
}
15
16
public override bool IsReadOnly
17
{
18
get {return false;}
19
}
20
21
public override void Save(string fileName){}
22
public override void Load(string fileName){}
23
public override void RedrawContent(){}
24
25
public override void Dispose()
26
{
27
p.Dispose();
28
}
29
30
public SDViewContent()
31
{
32
TitleName = "TestView";
33
}
34
35
}
36
}
37![]()
using System;2
using System.Drawing;3
using System.Windows.Forms;4
using ICSharpCode.SharpDevelop.Gui;5

6
namespace SDViewDemoPlug7
{8
public class SDViewContent : AbstractViewContent9
{10
SDViewControl p=new SDViewControl();11
public override Control Control 12
{13
get {return p;}14
}15
16
public override bool IsReadOnly 17
{18
get {return false;}19
}20
21
public override void Save(string fileName){}22
public override void Load(string fileName){}23
public override void RedrawContent(){}24
25
public override void Dispose()26
{ 27
p.Dispose();28
}29
30
public SDViewContent()31
{32
TitleName = "TestView"; 33
} 34
35
}36
}37

在项目中添加新建项à用户控件。改名为SDViewControl。各位可以在SDViewControl上添加一些相关的内容。最后添加插件配置文件ViewDemoPlug.addin,内容如下:
<AddIn name = "SharpDevelop Plug Demo"
author = "SongYuanWu"
copyright = "GPL"
url = "http://www.cnblogs.com/CBuilder"
description = "SharpDevelop"
version = "1.0.0">
<Runtime>
<Import assembly="SDViewDemoPlug.dll"/>
</Runtime>
<Extension path = "/SharpDevelop/Workbench/MainMenu/Tools">
<MenuItem id = "SDViewDemo"
label = "ShowMyView"
class = "SDViewDemoPlug.ShowViewCommand"/>
</Extension>
</AddIn>
还有不要忘记把ICSharpCode.Core.dll和SharpDevelop.Base.dll引用进项目中来。编译后把ViewDemoPlug.addin和SDViewDemoPlug.dll拷贝到SD的\AddIns\目录下。运行SD,就可以看到在【工具】菜单下出现了【ShowMyView】菜单项。Click【ShowMyView】菜单项后显示如图,再click【ShowMyView】菜单项后就会又显示一个TestView。各位如果问:“需要做象“启动页”一样的View,如果已经有打开的了就会激活打开的View该如何处理呢?”。其实很简单,你可以把ShowViewCommand类中的Run函数更改为:
foreach (IViewContent view in WorkbenchSingleton.Workbench.ViewContentCollection)
{
if (view is SDViewContent)
{
view.WorkbenchWindow.SelectWindow();
return;
}
}
WorkbenchSingleton.Workbench.ShowView(new SDViewContent());
此Demo演示了如何在SD添加一个View,同时也演示了如何在SD中更改菜单项。每添加一个菜单项时都要继承一个AbstractMenuCommand,并且改写Run()函数,当然你的XXXCommand也可以从SD的AbstractCommand继承,但要实现IMenuCommand接口。因为添加菜单项和添加工具条按钮比较简单,在以后的内容中我会一起讲,在此我就不多说了。



浙公网安备 33010602011771号