日期:2014-05-17 浏览次数:21178 次
以前写过一篇文章是实现界面与功能的分离,基于插件的方式,要实现一个功能需要实现一个类,该类继承于:AbstractToolButtonCommand,而AbstractToolButtonCommand又继承于:DevExpress.XtraBars.BarButtonItem类,这样在覆写父类的一些属性和方法的时候,VS的提示功能会列出很多属性,不方便开发,本次对整个结构进行了调整。AbstractToolButtonCommand类只实现了一些必要的接口如:
public abstract class AbstractToolButtonCommand : AbstractCommand, IMenuCommand, ICommand
{
private bool isEnabled = true;
private bool isVisible = true;
protected AbstractToolButtonCommand()
{
}
public virtual string GroupName { get; set; }
public virtual string PageName { get; set; }
private string caption = "按钮";
public virtual string Caption
{
get { return this.caption; }
set { this.caption = value; }
}
public virtual Image smallImage { get; set; }
public virtual Image largeImage { get; set; }
public virtual bool IsEnabled
{
get
{
return this.isEnabled;
}
set
{
this.isEnabled = value;
}
}
public virtual bool IsVisible
{
get
{
return this.isVisible;
}
set
{
this.isVisible = value;
}
}
}
我们要实现一个功能则只需要定义一个类继承于AbstractToolButtonCommand类且实现相应的属性和Run函数即可。这样在主窗口上就会自动加载一按钮,点击该按钮执行相应的功能。将该类编译成一个独立的DLL,放置于主程序的相同目录中,会自动将其反射出来加载:
public class AddOneSec : td.Core.AbstractToolButtonCommand
{
public override void Run()
{
var t = t