首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >画布仪表板应用程序winforms

画布仪表板应用程序winforms
EN

Stack Overflow用户
提问于 2012-03-30 07:12:45
回答 1查看 239关注 0票数 1

我希望构建一个应用程序,最终用户可以在运行时将控件拖放到窗体上。我在这个主题上搜索了很多东西,但不确定这种类型的应用程序到底是什么类型的。我搜索过画布应用程序、仪表板应用程序、组件应用程序、小部件、可视化编程和图表。我的设想与Visual风格的界面有点不同,因为我认为每个组件都可以拖到一个表面上,而不是窗口。我已经看到这是使用网格布局或画布样式布局完成的。我并不像在图表中那样需要“连接器”,但是我想要“表面”功能。

我的问题是:

  1. 是否为允许用户在运行时将控件拖放到表面的应用程序有一个特定的名称?
  2. --
  3. --第三方、开源和商业组件为WInforms、
  4. 提供了此功能--第三方、开源和商业组件为WPF、
  5. 和WPF提供了此功能。这是画布的“内置”功能吗?
EN

回答 1

Stack Overflow用户

发布于 2012-04-01 00:27:33

在Winforms中,可以通过在单击事件处理程序时将事件处理程序添加到控件中,然后通过在窗体的MouseMove事件中添加事件处理程序,将控件的位置设置为当前鼠标位置,从而创建类似表面/结构的画布。

示例代码:

代码语言:javascript
代码运行次数:0
运行
复制
    bool isDraggable = true;
    private void mycontrolClick(object sender, EventArgs e)
    {
        isDraggable = !isDraggable;           
    }

    private void Form_MouseMove(object sender, MouseEventArgs e)
    {
        if (isDraggable)
        {

            Point newLocation = new Point(e.X, e.Y);
            myControl.Location = newLocation;
        }
    }

其他步骤是为此目的向控件添加一个可拖动的图标(点击测试)区域(或模式),并可能添加某种形式的碰撞检测,比如边界框,这样控件就可以互相推送而不是覆盖。最后一步是添加一个序列化例程来保存画布的位置。此外,它可能需要气泡事件/鼠标事件。

另一个解决方案是创建一个传统的MDI应用程序。

http://msdn.microsoft.com/en-us/library/aa984330%28v=vs.71%29.aspx

使用画布结构的好处是,单个控件可以自定义绘制,因此当使用MDI容器进行比较时,可以使用“轻量级”(房地产方面)。甚至可以使用设计模式来布局仪表板,然后切换到运行时模式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9938498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档