精华内容
下载资源
问答
  • 主要介绍了WinForm拖拽控件生成副本的解决方法,对C#新手有一定的学习借鉴价值,需要的朋友可以参考下
  • Winform 拖拽控件

    千次阅读 2016-07-22 22:56:52
    private Point mouse_offset; private void label1_MouseDown(object o, MouseEventArgs e) { mouse_offset = new Point(-e.X, -e.Y);...这个是拖拽label的例子 PictureBox也是一样的原理 注意边框的宽度
    private Point mouse_offset;
            private void label1_MouseDown(object o, MouseEventArgs e)
            {
                mouse_offset = new Point(-e.X, -e.Y);//
            }
            private void label1_MouseMove(object o, MouseEventArgs e)
            {
    
                ((Control)o).Cursor = Cursors.Arrow;//设置拖动时鼠标箭头
                if (e.Button == MouseButtons.Left)
                {
                    Point mousePos = Control.MousePosition;
                    mousePos.Offset(mouse_offset.X, mouse_offset.Y);//设置偏移
                    ((Control)o).Location = ((Control)o).Parent.PointToClient(mousePos);
                }
            }
    这个是拖拽label的例子  PictureBox也是一样的原理  注意边框的宽度
    展开全文
  • WinForm 拖动控件

    2012-06-06 10:45:00
    privatePointmouseOffset;privatevoidlabel1_MouseDown(objectsender,MouseEventArgse){mouseOffset=newPoint(-e.X,-e.Y);}privatevoidlabel1_MouseMove(objectsender,MouseEventArgse){i...
    private Point mouseOffset;
    private void label1_MouseDown(object sender, MouseEventArgs e)
    {
        mouseOffset = new Point(-e.X, -e.Y);
    }

    private void label1_MouseMove(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Left)
        {
            Point mousePos = Control.MousePosition;
            mousePos.Offset(mouseOffset.X, mouseOffset.Y);
            ((Control)sender).Location = ((Control)sender).Parent.PointToClient(mousePos);
        }
    }

    转载于:https://www.cnblogs.com/51net/archive/2012/06/06/2537826.html

    展开全文
  • WinForm拖拽控件生成副本的解决方法本文讲述了WinForm中实现拖拽效果的功能,即在WinForm中有一个Button,可以实现拖拽这个Button到目标位置后生成一个该控件的副本的功能。具体操作步骤如下:要实现该功能主要分成...

    WinForm拖拽控件生成副本的解决方法

    本文讲述了WinForm中实现拖拽效果的功能,即在WinForm中有一个Button,可以实现拖拽这个Button到目标位置后生成一个该控件的副本的功能。具体操作步骤如下:

    要实现该功能主要分成如下三步:

    1)确定被拖拽的对象:这里是Button(要使得Button被单击之后可以拖拽,那么必须处理其MouseDown事件,同时调用其DoDragDrop——该函数接受两个参数:i)要拖动的数据。ii)拖动的效果(该效果是2“目标位置”所能够接受的效果,是一个枚举值):

    C#代码如下:

    Button1.DoDragDrop(Button1, DragDropEffects.Copy || DragDropEffects.Move); //形成拖拽效果,移动+拷贝的组合效果

    VB.NET页面代码如下:

    Button1.DoDragDrop(Button1, DragDropEffects.Copy Or DragDropEffects.Move) '形成拖拽效果,移动+拷贝的组合效果

    2)目标位置:这里是Form窗体自身。为了使得和Windows资源管理器中实现的文件拖拽效果一样(即拖拽一个文件到目标位置的中途,鼠标出现“+”号的效果)。那么应当处理DragEnter事件——即拖拽控件途中进入Form体内把效果设置成Copy的效果。

    C#代码如下:

    private void Form1_DragEnter(System.Object sender, System.Windows.Forms.DragEventArgs e)

    {

    //当Button被拖拽到WinForm上时候,鼠标效果出现

    if ((e.Data.GetDataPresent(typeof(Button)))) {

    e.Effect = DragDropEffects.Copy;

    }

    }

    VB.NET页面代码如下:

    Private Sub Form1_DragEnter(sender As System.Object, e As System.Windows.Forms.DragEventArgs) Handles MyBase.DragEnter

    If (e.Data.GetDataPresent(GetType(Button))) Then '当Button被拖拽到WinForm上时候,鼠标效果出现

    e.Effect = DragDropEffects.Copy

    End If

    End Sub

    同时,为了使得Form自身支持接受拖拽传来的控件,必须设置其AllowDrag=True:

    另外,一旦松开鼠标,那么拖拽过程结束。此时应当处理DragDrop事件,复制一个按钮:

    C#代码如下:

    private void Form1_DragDrop(System.Object sender, System.Windows.Forms.DragEventArgs e)

    {

    //拖放完毕之后,自动生成新控件

    Button btn = new Button();

    btn.Size = Button1.Size;

    btn.Location = this.PointToClient(new Point(e.X, e.Y));

    //用这个方法计算出客户端容器界面的X,Y坐标。否则直接使用X,Y是屏幕坐标

    this.Controls.Add(btn);

    btn.Text = "按钮" + count.ToString;

    count = count + 1;

    }

    VB.NET页面代码如下:

    Private Sub Form1_DragDrop(sender As System.Object, e As System.Windows.Forms.DragEventArgs) Handles MyBase.DragDrop

    '拖放完毕之后,自动生成新控件

    Dim btn As New Button

    btn.Size = Button1.Size

    btn.Location = Me.PointToClient(New Point(e.X, e.Y)) '用这个方法计算出客户端容器界面的X,Y坐标。否则直接使用X,Y是屏幕坐标

    Me.Controls.Add(btn)

    btn.Text = "按钮" + count.ToString

    count = count + 1

    End Sub

    这里需要注意点:Location属性(指定控件放置位置的起始点)不能直接用e.X或e.Y——因为这是屏幕坐标,要根据实际的控件界面坐标进行适度转换,最简单方法是——PointToClient方法。

    下面给出完整代码:

    【界面如下所示】

    C#代码如下:

    using Microsoft.VisualBasic;

    using System;

    using System.Collections;

    using System.Collections.Generic;

    using System.Data;

    using System.Diagnostics;

    public class Form1

    {

    //计数变量,说明输出了第N个Button

    private int count = 1;

    private void Form1_Load(System.Object sender, System.EventArgs e)

    {

    this.AllowDrop = true;

    //窗体自身支持接受拖拽来的控件

    }

    private void Button1_MouseDown(System.Object sender, System.Windows.Forms.MouseEventArgs e)

    {

    //左键的话,标志位为true(表示拖拽开始)

    if ((e.Button == System.Windows.Forms.MouseButtons.Left)) {

    Button1.DoDragDrop(Button1, DragDropEffects.Copy | DragDropEffects.Move);

    //形成拖拽效果,移动+拷贝的组合效果

    }

    }

    private void Form1_DragEnter(System.Object sender, System.Windows.Forms.DragEventArgs e)

    {

    //当Button被拖拽到WinForm上时候,鼠标效果出现

    if ((e.Data.GetDataPresent(typeof(Button)))) {

    e.Effect = DragDropEffects.Copy;

    }

    }

    private void Form1_DragDrop(System.Object sender, System.Windows.Forms.DragEventArgs e)

    {

    //拖放完毕之后,自动生成新控件

    Button btn = new Button();

    btn.Size = Button1.Size;

    btn.Location = this.PointToClient(new Point(e.X, e.Y));

    //用这个方法计算出客户端容器界面的X,Y坐标。否则直接使用X,Y是屏幕坐标

    this.Controls.Add(btn);

    btn.Text = "按钮" + count.ToString();

    count = count + 1;

    }

    public Form1()

    {

    DragDrop += Form1_DragDrop;

    DragEnter += Form1_DragEnter;

    Load += Form1_Load;

    }

    }

    VB.NET页面代码如下:

    Public Class Form1

    '计数变量,说明输出了第N个Button

    Private count As Integer = 1

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

    Me.AllowDrop = True '窗体自身支持接受拖拽来的控件

    End Sub

    Private Sub Button1_MouseDown(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles Button1.MouseDown

    '左键的话,标志位为true(表示拖拽开始)

    If (e.Button = Windows.Forms.MouseButtons.Left) Then

    Button1.DoDragDrop(Button1, DragDropEffects.Copy Or DragDropEffects.Move) '形成拖拽效果,移动+拷贝的组合效果

    End If

    End Sub

    Private Sub Form1_DragEnter(sender As System.Object, e As System.Windows.Forms.DragEventArgs) Handles MyBase.DragEnter

    If (e.Data.GetDataPresent(GetType(Button))) Then '当Button被拖拽到WinForm上时候,鼠标效果出现

    e.Effect = DragDropEffects.Copy

    End If

    End Sub

    Private Sub Form1_DragDrop(sender As System.Object, e As System.Windows.Forms.DragEventArgs) Handles MyBase.DragDrop

    '拖放完毕之后,自动生成新控件

    Dim btn As New Button

    btn.Size = Button1.Size

    btn.Location = Me.PointToClient(New Point(e.X, e.Y)) '用这个方法计算出客户端容器界面的X,Y坐标。否则直接使用X,Y是屏幕坐标

    Me.Controls.Add(btn)

    btn.Text = "按钮" + count.ToString

    count = count + 1

    End Sub

    End Class相关阅读:

    Win7免费升级到win10系统操作步骤图文教程

    thinkphp模板的包含与渲染实例分析

    想安装win10最新预览版 固态硬盘内存不够用该怎么办?

    Linux系统下设置静态IP或自动获取动态IP的简单方法

    MySQL数据库优化技术之配置技巧总结

    Win10/Win8.1自动维护功能怎么快速开启和关闭?

    浏览器兼容性问题大汇总

    WinXP下如何将HTML文档设置为屏保让其更个性

    总结IOS中隐藏软键盘的三种方式

    win10 10074预览版开始菜单打不开怎么办?

    Mac系统检测是否受到Shellshock攻击的技巧

    win7权限如何设置最高管理员权限呢?

    JS常见问题之为什么点击弹出的i总是最后一个

    C语言实现排序算法之归并排序详解

    展开全文
  • .Net WinForm 拖动控件

    2012-06-01 09:50:00
    private Point mouseOffset;private void label1_MouseDown(object sender, MouseEventArgs e){ mouseOffset = new Point(-e.X, -e.Y);}private void label1_MouseMove(object sender, ...
    private Point mouseOffset;
    private void label1_MouseDown(object sender, MouseEventArgs e)
    {
        mouseOffset = new Point(-e.X, -e.Y);
    }

    private void label1_MouseMove(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Left)
        {
            Point mousePos = Control.MousePosition;
            mousePos.Offset(mouseOffset.X, mouseOffset.Y);
            ((Control)sender).Location = ((Control)sender).Parent.PointToClient(mousePos);
        }
    展开全文
  • 最近,有几个小伙伴私信我关于WinForm的问题,关于拖拽控件,就像在窗体设计时调整控件大小和位置一样 https://greambwang.blog.csdn.net/article/details/90639601 源码: ...
  • winform控件拖拽

    2017-08-11 11:49:36
    控件拖动 不拉出对话框 坐标转换 winform 拖拽 VS2010 编译通过
  • 一个简单的示例教你如何实现winform的ListBox控件拖拽排序功能
  • winform窗体拖拽控件

    2019-01-09 16:00:48
    winform窗体拖拽,使用详见博客:https://blog.csdn.net/HorseRoll/article/details/86157358
  • WinForm控件拖拽

    2011-12-18 14:41:51
    WinForm控件拖拽
  • * 当ToolStrip控件中子控件超出屏幕时,拖动控件可以实现滑动效果。拖动到控件边缘距窗体边缘1/3宽度时(可设), 自动回弹。拖动控件边缘在屏幕内时释放鼠标,控件自动回弹,边缘吸附窗体边缘。 * 当ToolStrip...
  • winform自由拖动控件,模拟设计器
  • Winform透明控件

    2019-09-18 05:51:31
    最新做一个项目,使用的是Winform,碰到一个问题,需要在后台执行某项任务的时候,画面显示“处理中”这样的半透明遮罩,Web项目中可以使用DIV(Css半透明),或者Wpf项目的话本身控件支持真透明(直接与DirectX进行...
  • winform自定义控件

    千次阅读 热门讨论 2016-04-04 23:20:52
    winform开发过程中经常遇到一些特殊实现效果,现有的控件就无法满足需求,此时,一些灵活的自定义控件就派上了用场
  • 自定义Winform验证控件 类似于网页验证控件 使用方便 拖拽到界面上及可对界面上的所有控件进行验证 支持 比较验证 非空验证 数据类型验证 正则表达式验证 WINFORM开发必备控件
  • c# winform 控件拖动

    2011-03-17 12:06:10
    c# winform 控件拖动比较不错的东东
  • WinForm控件拖动总结(原理篇)

    千次阅读 2014-09-23 15:55:44
    WinForm控件拖动总结(原理篇)  这几天在公司做项目涉及到了Winform的中涉及到控件拖动的功能实现,比如TreeView中的项拖动添加到ListView中等。以前没有弄过。然后看了很多例子,还有msdn上面的帮助...
  • Winform分页控件使用详细介绍

    千次阅读 2018-06-15 13:54:26
    自从上篇随笔《 Winform分页控件最新版本发布,并提供基于DotNetBar界面的版本》介绍了最新版本的分页控件,并提供下载使用后,很多人对分页控件非常感兴趣(毕竟Winform数据分页是很
  • Winform自定义控件实例

    千次阅读 2014-02-19 09:30:30
    写在前面: .Net已经成为许多软件公司的选择,而.Net自定义WinForm界面控件,也成为编程的热点,越来越多的程序员会开发自己需要的自定义界面控件.小作坊网介绍了多种自定义的界面控件,基本了包括了日常所需的各种基本...
  • winform窗体自由拖拽控件

    千次阅读 2019-01-09 16:00:14
    实现功能:实现自由拖拽控件,按住鼠标控件拖拽时有黑框显示,松开鼠标控件位置即为黑框位置 实现思路:在按住鼠标时,得到所点击控件的Size以及Location,在鼠标移动时,得到鼠标的坐标,并且在光标坐标处绘制一个...
  • 主要为大家详细介绍了WinForm实现鼠标拖动控件跟随效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • DevExpress Winform 常用控件是本人在前几个项目的一些笔记,在实际的项目中可能会经常涉及到,所以对常用控件的属性、方法、事件都列举出来。 Ø 在 Visual Stuodio 中添加 DevExpress 控件 1. 使用...
  • VS2010下制作winform自定义控件
  • 实现的功能:WinForm窗体中让控件可以随便拖动;类似于BS中弹出可拖动的层一样;界面如图:直接上代码:namespaceDropControlDemo{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,762
精华内容 2,304
关键字:

winform拖拽控件