如题。
具体点说就是:想做一个曲线控件,控件在窗体程序设计时,直接通过点击和双击让曲线控件拐弯,不是在程序运行时,而是在设计时,感觉好像不太可能实现。希望各位大侠帮忙。

解决方案 »

  1.   

    二楼没有明白我的意思,我是说,让控件在窗体程序设计时能够任意改变形状,而改变形状是通过点击等事件控制的,就像Visio流程图中的曲线那样,可以自由拖动改变形状。这个过程不是在程序运行之后,而是在设计时就能实现。
      

  2.   

    设计时, 是控件的 Designer 将控件窗口子类化(window subclass),
    控件接收到的消息, 完全由 Designer 接管.这就是为什么编辑框在设计时不能输入文字的原因.做个比喻, 汽车回到维修站, 被悬挂系统吊起来了,
    所有部件都进入了一个维修状态,
    这时, 就受维修人员任意摆布了.
      

  3.   

    你真要自己做这个, 基本有 3 个大的知识点,1. 窗口的鼠标操作, hit test, drag / drop.
    2. 如何设计控件 Designer.
    3. 熟悉 .net 设计时架构
      

  4.   

    .NET Shape Library: A Sample Designer看完, 看懂, 这个例子, 你就会了.
      

  5.   

    回6楼:
    恩,我感觉也不太好实现。
    之所以有这个想法是因为曾经在网上下了一个钟表的控件,这个控件中有个Timer,Timer的Tick事件调用控件的refresh方法,重画控件,Timer的属性一直为true,这样这个钟表控件这窗体程序设计时也能够走动。感觉还是挺奇妙的,这个控件中的Timer在程序设计时也能执行线程...???...
      

  6.   

    你可以自己弄个简单试试, 控件的自我描绘还是没有被截取的    protected override void OnPaint(PaintEventArgs e)
        {
          base.OnPaint(e);
          if (DesignMode)
          {
            string logo = "超级无敌牛比控件";
            SizeF size = e.Graphics.MeasureString(logo, Font);
            e.Graphics.DrawString(logo, Font, Brushes.Red, (ClientSize.Width - size.Width) / 2,
              (ClientSize.Height - size.Height) / 2);
          }
        }