Dev控件,在WinForm下动态配置界面

一、使用场景

  用于数据录入界面,数据展示界面,查询配置界面等等。例如,我们为用户定制了一张人员信息卡片,往往初期开发时由于各种原因,没有设计某个字段,或者是界面展现的方式不够友好直观,那么我们希望通过以更改配置文件的方式来满足用户的需求,而不需要我们重新对项目代码生成发布,减少了开发人员的工作量。

  当然,如果您的表单不是一个变化点,那么本人不建议使用配置的方式生成界面。

二、控件封装

  基于对LayoutControl的封装,使其可根据配置文件的配置信息,动态的创建界面。由于该控件自带了可保存其布局信息的功能,我们在设计中可以把精力放在更有用的环节上。封装后的控件名为ExLayoutControl。我也将它称为布局控件,因为它实质上就是一个容器。

三、设计经验

  该方案是本人第三个设计,已经在项目中大量实施,效果明显,而且用户对此非常认可,可以在用户的现场监督下,快速的实现其与之相关的需求。

  第一、二个版本,都是已重载现有控件,实现统一接口为核心思想。优点是,调用方比较简单,但是需要为所有用到的控件实现统一的接口才能使用到实际项目中,扩展性极差。

  在有了前两个版本的经验基础上,我意识到,不能使用继承的方式来实现该控件,而应以对象组合的方式实现。

如下图结构:

图中深色底的为容器控件;控制器用于控制控件的属性及行为。

相信各位看到此图,已经明白了其中的奥妙。其中的核心也就是这些控制器,用他们来组合管理各个控件的属性和行为

时间: 2024-09-22 12:24:40

Dev控件,在WinForm下动态配置界面的相关文章

Ajax中不使用UpdatePanel控件的情况下如何异步刷新界面(控件)?

问题描述 在一个页面上有ScriptManager控件.一个Button控件.一个Label控件,在Page_Load方法加入以下语句:this.ScriptManager1.RegisterAsyncPostBackControl(this.Button1);在Button1_Click方法加入以下语句:this.Label1.Text=System.DateTime.Now.ToString();请教:在不把Label控件放入到一个UpdatePanel中的情况下,如何使Button1在按下

combox-C#或者DEV控件高手进,求助大神!呀,gridview中动态添加COMBOX后出现问题

问题描述 C#或者DEV控件高手进,求助大神!呀,gridview中动态添加COMBOX后出现问题 步骤1:我定义一个全局的COMBOX控件变量: 步骤1:我为GRIDVIEW动态添加了一列,将这一列设置我步骤1中的COMBOX: 步骤2:我为这个COMBOX添加click事件,在事件中我读取GRIDVIEW中的focusROW,读取某一列,判断该列的值来动态为COMBOX添加ITEM; 问题:在click事件中,每次都能正确的获取focusROW,也能为combox添加ITEM,但是就是COM

用Winform开发了一个程序,界面上的控件在Win7下是基本对齐的,到了WindowsServer2008下就变的完全对不齐了?请问这是什么原因?

问题描述 用Winform开发了一个程序,界面上的控件在Win7下是基本对齐的,到了WindowsServer2008下就变的完全对不齐了?请问这是什么原因?RT 解决方案 解决方案二:不知道你是用什么方法"对齐"的,所以无法判断.比如说你用"空格"来搞什么"对齐",那么不同系统的同一个主题下的细节设置也是有调整的,空格在高版本的windows下肯定就变宽了一些,那么自然在高版本windows下就"鼓出去"了.你用于"

DEV控件的一个问题,关于bandedGridView的事件的

问题描述 小弟现在的项目里使用了DEV控件,在bandedGridView里实现了这么一个功能,通过CustomDrawCell和MouseMove两个事件组合实现了这么一个功能:鼠标滑过单元格上的时候在指定的单元格上画上实线或者虚线框,MouseMove好说,划入单元格就能触发事件,至于CustomDrawCell事件,我现在是这么触发的:在MouseMove里满足条件的判断分支中加上这段代码(dtpio是bandedGridView绑定的数据源)for(inti=0;i<dtpio.Rows

Winform下动态执行JavaScript脚本获取运行结果,谈谈网站的自动登录及资料获取操作

为了有效阻止恶意用户的攻击,一般登录都会采用验证码方式方式处理登录,类似QQ的很多产品的验证码处理,但在一些OA系统中,系统通过非对称加密方式来处理登录的密码信息,登录页面每次提供对密码进行加密的公钥是不同的,因此如果要模拟登录,就需要先获取公钥,然后根据公钥把输入的密码加密,然后通过POST提交给服务器进行验证登录.由于公钥是页面刷新变化的,而加密是通过Javascript脚本进行加密,如下面的登录页面源码所示.   <meta http-equiv="Content-Type"

ProcessCmdKey中如何判断是在哪个控件上按下的按键?

问题描述 如题,现在在做一个WinForm应用,有多个TabPage,DataGridView以及很多其他控件.我想在ProcessCmdKey方法中针对在不同的控件上按下的按键做不同的处理.但目前没找到办法在ProcessCmdKey中得知是在哪个控件上按下的按键.特此来请教高手以下两个问题:1,是否有办法从ProcessCmdKey的入参Message或者KeyData获知是在哪个控件上按下的按键?2,在寻找办法的过程中,发现了DataGridView控件的焦点很奇怪,即使我选中了该Data

DEV控件的 gridControl怎么绑定数据到DataSet啊?在线等。

问题描述 网上找了很多资料.没有相关的解决办法,有的办法试了很多,结果也不行!求对DEV控件比较熟的人来帮我解决下!我只需要把gridControl.DataSource的数据成功绑定到DataSet中就可以了..最好有源码!谢谢了! 解决方案 解决方案二:首先你的DataSet必须有数据,这个会吧?解决方案三:页面数拉一个BindingSource,把DataSet数据绑定到BindingSource:BindingSource.DataSource=DataSet;再把BindingSour

dev控件中LookUpEdit的数据绑定问题

 LookUpEdit绑定实体类困扰了我很久,明明和工作室万哥的前台代码是差不多的,但是怎么也绑不成功.后来经过老师的帮忙调试,才找到问题,而这个源头也让我十分吐血,居然是GridControl的Name属性值设的不对,必须要设Name=PART_GridControl,想了半天还是没有想明白.现附上代码 首先是Xaml <dxg:LookUpEdit Height="25" Name="txtSupplierId" DisplayMember="i

Android TextView控件文字添加下划线的实现方法_Android

如下所示: TextView tv = (TextView) findViewById(R.id.text); tv.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG); tv.setText("添加下划线"); 以上就是小编为大家带来的Android TextView控件文字添加下划线的实现方法的全部内容了,希望对大家有所帮助,多多支持~ 以上是小编为您精心准备的的内容,在的博客.问答.公众号.人物.课程等栏目也有的相关内容,欢迎继续使用右上