拖放winform控件

本文关键字:控件 winform 拖放 | 更新日期: 2023-09-27 18:07:33

我想在一个winform应用程序中拖放一个控件(例如标签)。我看到了一些拖放文本的例子,但这不是我想要的。我想让用户能够移动控件。谁能告诉我一些资源或例子?谢谢。

拖放winform控件

你应该看看如何制作可拖动控件的例子。

SO中也有一些答案。

在c#的面板上拖放控件时可以看到这个

这是一个关于如何托管表单设计器的完整示例:

使用。net构建自定义表单设计器定制应用程序

我很久以前在Delphi中做过类似的事情,将搜索源代码,将其转换为。net c#并制作一个关于此事的wiki页面,因为它最近变得如此流行的问题:)

据我所知,你想要删除的控件被称为容器,事实上任何控件都可以作为容器。首先那个容器,你需要启用你需要拖动的控件的拖放属性和拖拽属性。

然后为每个控件编写事件(Candrag, candrop, controladded等),其中包含一些逻辑来保存对象并按照您的需要显示它们。

比如说,我举一个例子,你想把imagettext从comombox拖到一个图片框中,然后让这个图片框分析这个文本和一个目录中的相关文件名,然后把这个图片加载到它当前的目录中。

这里,当你开始从组合框中拖动文本时,你需要在事件列表中写一些逻辑。然后,一旦你放下,你必须编写逻辑来理解添加了什么类型的对象,并在你放下其他控件的控件中获得与之相关的文本(有点破译)。

对不起,我现在没有代码给你,但我希望你知道它是如何完成的。也许这篇文章能帮到你?http://vicky4147.wordpress.com/2007/02/04/a-simple-drag-drop-in-winforms/

    bool draging = false;
    int curPosX, curPosY;
    private void label2_MouseDown(object sender, MouseEventArgs e)
    {
        draging = true;
        curPosX = Cursor.Position.X;
        curPosY = Cursor.Position.Y;
    }
    private void label2_MouseMove(object sender, MouseEventArgs e)
    {
        if (draging)
        {
            label2.Left += Cursor.Position.X - curPosX;
            curPosX = Cursor.Position.X;
            label2.Top += Cursor.Position.Y - curPosY;
            curPosY = Cursor.Position.Y;
        }
    }
    private void label2_MouseUp(object sender, MouseEventArgs e)
    {
        draging = false;
    }