读书人

这题能难倒你吗?解决方法

发布时间: 2012-01-16 23:36:51 作者: rapoo

这题能难倒你吗??????????
现在有个需求是这样的:
所有的单据窗口都提供打印设置的功能,当在该单据窗口(假定为billUI)按了打印设置后,(1)将该窗口的所有控件传递给打印设置窗口(假定为psUI),psUI将传递来的控件绘制在界面上,但是这些控件具有了新的功能,也即是用户可以使用鼠标在该界面拖动控件,调整控件大小,设置控件位置等各种属性设置,(2)也可以使用一个属性框设置选中控件的属性,(3)额外还提供用户在界面画线的功能,有点类似于VS.NET的界面设计器,当用户设计好了以后,(4)用户可以保存这些界面设置信息,(5)以便下次打印设置时使用上次的设置.

这里就涉及到五个问题
1.我的想法是自己编写鼠标事件,处理选中控件时出现的选择框,以及停留在选择框时可以拖拉控件.(看过有自定义界面设计的文章,可以让用户定制界面,但是我跟文章所说的不同,我只是想实现其中的控件处置功能而已,有办法吗?看过有心得的请介绍一下)
2.属性框(界面设计时的属性框)这个控件在VS2005是有提供的,但是如何实现还没试过,也即是选中一个控件时,如何将其所有属性加载到属性框.
3.画线功能可以使用鼠标事件,那么要注意什么问题呢,比如界面什么时候要重绘,等,希望有经验的朋友提醒一下。
4.我使用XML文档来保存,包括控件的名字,他的类型名,他的属性名以及对应的属性值,这个是没问题的,注意,这个类型名可能类似这样 ,比如一个面板 system.windows.forms.panel.这个名字在读取出来后还将讨论它.
5.读取XML文档时候,如何还原原来的设置呢?当然,可以仍然把单据的所有控件传递进来,根据控件名来取得节点并设置属性,而我如果想动态创建控件呢?XML文档里面所保存的控件类型名不是可以用来获取一个类型TYPE吗?使用反射方法可以创建一个类型的实例,比如,我想创建一个面板实例,可以使用如下代码:
dim t as type =type.gettype(system.windows.forms.panel)
dim p as panel =ctype(actvator.createInstanct(T),panel)
照理说,这样能得到我想要的面板,但是似乎这个typename参数 system.windows.forms.panel 有问题,我得到的t是Nothing,而不是panel类型.
问题在哪里?我想不通typename应代表什么,如何在第四步中,保存控件信息到XML文档时就取得呢?更进一步的说,假如我的控件是自定义的呢,其typename又得如何取得?烦请高手指教,不胜感激.

如果能给个完整的建议,小弟再另外送一百分!!!

[解决办法]
一会儿有时间看看
[解决办法]
难啊
[解决办法]
太多了,看糊涂了
[解决办法]
太多了,先帮顶
[解决办法]
up
[解决办法]
http://msdn.microsoft.com/msdnmag/issues/03/04/Design-TimeControls/default.aspx
[解决办法]
属性框还没用过,不过可以查MSDN,了解大概的用法.

[解决办法]
MARK
[解决办法]
个人意见:

1.打印界面无非是想把做出来的东西打印出来.为什么一定要用那么多控件呢?控制起来好麻烦!

2.打印的内容无非是以下三种:固定值,变量,画线.(在没有特殊图形需求的前提下).

从以上两点看来,可不可以考虑全都用Label来实现呢?客户需要的无非就是调整调整位置,改改大小,修改字体,设一下居中什么的.最多再画个线......这些都可以用Label来实现,顶多画线部分单独做.相信对你来说也不难吧?呵呵

只要你的XML控制语句足够强大,是否就不存在去CType控件的问题了呢?


以上纯属个人无聊乱想,有没有利用价值你自己看着办.......我闪~~

读书人网 >VB Dotnet

热点推荐