• 继上次的GDI+做报表设计器后.............


    上次的讨论:想用GDI+2.0做设计器,便在实现过程中遇到大麻烦
    在上次讨论中,不少朋友给了很多意见,并在测试中有一个意外的收获,即FocusBox与组件的使用,
    这次发上来的也主要想说明一下用FocusBox与组件使用来做一个Form设计器
    现在的进度比我预计的要快,因为我计划在完成报表设计器后才去实现这个Form设计器,不过我觉得在Form设计器中只要将Label进行一些小的设置就能完成一套报表设计器的工作了.

    虽然已有一点点的初形出来了,但还有很多问题没有解决,希望大家能一起讨论想一些好的解决方法

    下面列出的是目前首要解决的任务
    1.还有闪烁,在组件量大时会更明显
    2.还不支持多组件同时移动,但已从FocusBox中生成一个Darg事件
    3.组件的Paint事件未做到完美,当FocusBox移动到Text显示位置时会消失,在Label上有些时候也会不消失,(可能是未能激活相应组件的Paint事件)
    4.在选择多组件时单一组件大小仍可调整,但调整Cursor不能显示
    5.未加入键盘大小/位置调整功能,但已从FocusBox中引出LocationSize属性
    6.未加入键盘处理功能,如Del处理
    7.不能对控件实现Hook
    8.选择组件时还有点问题


    这里第七个问题是最麻烦的,我以前尝试用System.Windows.Forms.Design下的东西来做,但没成功,以前在网上看到外国人用这个做过一个设计器,但现在想找却找不到了,以前下载的东西又被我给删除了,哎:(


    源码下载:https://files.cnblogs.com/pvistely/FormDesigner.rar
    下面是用于调试的窗口,
    由两个panel组成,上面的panel由Listener直接接管,下面的panel是用于来显示单个FocusBox与Mouse的位置,并在中间的textbox中显示当前FocusBox参数信息:
    S:sender    P:parent    PLoc:parent location    Loc:Location    WA:WorkArea    IR:InRact

    UTest按钮是来测试单一FocusBox的功能,将自动梆定Label1
    LTest按钮是用来测试Listsner的整体功能,将会自动添加panel1中的所有组件

    目前包括两个类
    Listener:用于接管用于放置组件的容器,提供了Add方法来添加组件(目前还未支持自动设置组件parent的功能)
    FocusBox:用来控制选择组件的位置与大小



  • 相关阅读:
    UML各种图总结
    信息系统安全等级保护基本要求
    MySQL InnoDB表空间加密
    服务器常见操作问题
    公众号-接口配置信息 接口实现 netcore
    某些时候命令绑定可能会存在刷新不及时,往往需要点击一次程序才能激活,特此记录下解决方案
    c#几种场景获取程序运行目录
    wpf 控件绑定鼠标命令、键盘命令
    并发特别高的时候,随机数的种子生成
    mongodb占用大量内存
  • 原文地址:https://www.cnblogs.com/pvistely/p/240054.html
Copyright © 2020-2023  润新知