C#一步一步实现插件框架的示例(四)
2013-02-01 12:30
141 查看
C#一步一步实现插件框架的示例(三)
C#一步一步实现插件框架的示例(二)
C#一步一步实现插件框架的示例(一)
前面已经实现了插件的基本功能,可能部分朋友不太清楚如何来使用,比如在View里面我们只使用了一个TextBox控件,而我们的界面中一般都会有很多的控件,如何加上去,而在IViewcontent中,我们只设置了一个ViewControl,答案就是使用自定义控件。现在我们 就来做一下。
首先添加一个用户自定义控件:userControl,可以在这个控件所继承的父类上一直使用查看定义,可以发现他的父类也是继承于Control这个类,所以我们的IViewContent的ViewControl是可以指 向这个自定义控件的。然后添加你自己希望在界面上所展示的控件,在这里添加了一个TextBox和一个 DataGridView,我们用来查找DataGridView中的数据。为了演示,我将查询按钮单独做成了一个插件(当然你可以直接在界面上增加一个按钮来查询,会更方便,但有时我们希望在其他地方增加这样的功能,所以做成了插件)。
然后在里面添加代码,我这里是往DataGridView中添加了一些数据:
注意:在设计这个界面的时候一定要将这两个控件的可访问性改为public 以方便在其他的插件中来访问。
然后修改上次的其他一个按钮的功能:
将其标题改为查询,同时他的IsEnable属性改为判断是否有子窗口,和子窗口中的DataGridView是否包含有数据行。否则就不能查询。如果是在实际使用中,这个地方可能会添加权限的判断功能。这样就很方便了。
我们在TextBox中输入某些行中包含的数据,然后点击查询,就会就不包含这些数据的行删除掉。
最后附上源码:http://www.kuaipan.cn/file/id_2334499409028358.htm
C#一步一步实现插件框架的示例(二)
C#一步一步实现插件框架的示例(一)
前面已经实现了插件的基本功能,可能部分朋友不太清楚如何来使用,比如在View里面我们只使用了一个TextBox控件,而我们的界面中一般都会有很多的控件,如何加上去,而在IViewcontent中,我们只设置了一个ViewControl,答案就是使用自定义控件。现在我们 就来做一下。
首先添加一个用户自定义控件:userControl,可以在这个控件所继承的父类上一直使用查看定义,可以发现他的父类也是继承于Control这个类,所以我们的IViewContent的ViewControl是可以指 向这个自定义控件的。然后添加你自己希望在界面上所展示的控件,在这里添加了一个TextBox和一个 DataGridView,我们用来查找DataGridView中的数据。为了演示,我将查询按钮单独做成了一个插件(当然你可以直接在界面上增加一个按钮来查询,会更方便,但有时我们希望在其他地方增加这样的功能,所以做成了插件)。
然后在里面添加代码,我这里是往DataGridView中添加了一些数据:
DataTable dt = new DataTable("dt"); DataColumn c1 = new DataColumn("Name"); DataColumn c2 = new DataColumn("Age"); DataColumn c3 = new DataColumn("Address"); public userControl() { InitializeComponent(); dt.Columns.Add(c1); dt.Columns.Add(c2); dt.Columns.Add(c3); System.Random rd = new Random(); for (int i = 0; i < 10; i++) { var r = dt.NewRow(); r[0] = "张三" + rd.Next(); r[1] = i + 10; r[2] = System.Guid.NewGuid(); dt.Rows.Add(r); } this.dataGridView1.DataSource = dt; } } public class User { public string Name { get; set; } public string Age { get; set; } public string Address { get; set; } public User(string name,string age,string add) { this.Name = name; this.Address = add; this.Age = age; } public User() { } }
注意:在设计这个界面的时候一定要将这两个控件的可访问性改为public 以方便在其他的插件中来访问。
然后修改上次的其他一个按钮的功能:
public class test:AbstractCommand { public override void Run() { var form = WorkBenchSingleTon.WorkBench.ActiveMdiChild; if (form is IViewContent) { Search((IViewContent)form); } } void Search(IViewContent view) { var control = ((td.addin.userControl)((IViewContent)view).ViewControl); string name = control.tbName.Text; var dt = (DataTable)control.dataGridView1.DataSource; string e = "Name not like '%" + name + "%'"; var rows =dt.Select(e); foreach (var r in rows) { dt.Rows.Remove(r); } control.dataGridView1.DataSource = dt; } public override bool IsEnable { get { if (WorkBenchSingleTon.WorkBench==null) return false; var form = WorkBenchSingleTon.WorkBench.ActiveMdiChild; if (form is IViewContent) { var control = ((td.addin.userControl)((IViewContent)form).ViewControl); return control.dataGridView1.Rows.Count > 1; } return false; } set { base.IsEnable = value; } } public override string Caption { get { return "查询"; } set { base.Caption = value; } }
将其标题改为查询,同时他的IsEnable属性改为判断是否有子窗口,和子窗口中的DataGridView是否包含有数据行。否则就不能查询。如果是在实际使用中,这个地方可能会添加权限的判断功能。这样就很方便了。
我们在TextBox中输入某些行中包含的数据,然后点击查询,就会就不包含这些数据的行删除掉。
最后附上源码:http://www.kuaipan.cn/file/id_2334499409028358.htm
相关文章推荐
- C#一步一步实现插件框架的示例(一)
- C#一步一步实现插件框架的示例(四)
- C#一步一步实现插件框架的示例
- C#一步一步实现插件框架的示例(四)
- C#一步一步实现插件框架的示例(二)
- C#一步一步实现插件框架的示例(三)
- C#一步一步实现插件框架的示例(三)
- C#实现插件框架--过程
- C# 基于插件的开发框架实现Ribbon界面与功能的分离附DEMO
- C# 优化基于插件的开发框架实现Ribbon界面与功能的分离附DEMO
- CNI插件实现框架---以loopback为示例
- c#实例化继承类,必须对被继承类的程序集做引用 .net core Redis分布式缓存客户端实现逻辑分析及示例demo 数据库笔记之索引和事务 centos 7下安装python 3.6笔记 你大波哥~ C#开源框架(转载) JSON C# Class Generator ---由json字符串生成C#实体类的工具
- C#实现压缩和解压缩的方法示例【Gzip和Zip方式】
- jQuery实现的响应鼠标移动方向插件用法示例【附源码下载】
- CI框架入门示例之数据库取数据完整实现方法
- 基于插件技术的GIS应用框架(C# + ArcEngine9.3)(五)
- Web框架——小编浅谈Struts2中使用JSON插件实现Ajax
- C#利用Emit反射实现AOP,以及平台化框架封装思路
- jQuery插件FusionCharts实现的2D面积图效果示例【附demo源码下载】
- C#实现多级子目录Zip压缩解压实例 NET4.6下的UTC时间转换 [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了 asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程 asp.net core异步进行新增操作并且需要判断某些字段是否重复的三种解决方案 .NET Core开发日志