VB.net 实现TreeView控件的拖拽事件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VB.net 实现TreeView控件的拖拽事件相关的知识,希望对你有一定的参考价值。

如何实现对树控件的拖拽,要求有详细的说明。

谢谢了,另有加分

参考技术A 注意看看控件的属性,这个是可以靠修改属性来更改的,里面有接收拖曳进来的数据和拖曳出去的数据的属性,改成ture就可以拖曳了csdn中有拖曳的实例,就是以treeview控件为例子的,去找找,我上次见过,好像在控件那部分 参考技术B 你怎么不安装MSDN啊.里面有详细说明,包括各种控件的说明以及语法还有各种函数的说明,反正是你想要有的帮助都有.如果你现在没有MSDN的安装盘,快去买一张吧,支持盗版的,便宜. 参考技术C 注意看看控件的属性,这个是可以靠修改属性来更改的,里面有接收拖曳进来的数据和拖曳出去的数据的属性 参考技术D 可惜,我不会啊,大哥

js 实现简单的拖拽

 

 

步骤

 

使用 JavaScript 实现拖拽的步骤:

  • 让元素捕获事件(mousedown, mousemove & mouseup)
  • 单击并不释放,触发 mousedown,标记开始拖拽,并获取元素和鼠标的位置
  • 拖动鼠标,触发 mousemove,不断的获取鼠标的位置,并通过计算重新确定元素的位置
  • 释放师表,触发 mouseup,结束拖拽,确定元素位置并更新

 

代码1:

demo1.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        #block {
            width: 200px;
            height: 200px;
            background-color: yellow;
            position: absolute;
        }
    </style>
</head>
<body>
<div id="block"></div>
<script>
    /**
     * 拖动元素
     * @param elementId 元素id
     */
    function drag(elementId) {
        var element = document.getElementById(elementId);
        var position = {
            offsetX: 0, //点击处偏移元素的X
            offsetY: 0, //偏移Y值
            state: 0 //是否正处于拖拽状态,1表示正在拖拽,0表示释放
        };
        //获得兼容的event对象
        function getEvent(event) {
            return event || window.event;
        }
        //元素被鼠标拖住
        element.addEventListener(‘mousedown‘, function (event) {
            //获得偏移的位置以及更改状态
            var e = getEvent(event);
            position.offsetX = e.offsetX;
            position.offsetY = e.offsetY;
            position.state = 1;
        }, false);
        //元素移动过程中
        document.addEventListener(‘mousemove‘, function (event) {
            var e = getEvent(event);
            if (position.state) {
                position.endX = e.clientX;
                position.endY = e.clientY;
                //设置绝对位置在文档中,鼠标当前位置-开始拖拽时的偏移位置
                element.style.position = ‘absolute‘;
                element.style.top = position.endY - position.offsetY + ‘px‘;
                element.style.left = position.endX - position.offsetX + ‘px‘;
            }
        }, false);
        //释放拖拽状态
        element.addEventListener(‘mouseup‘, function (event) {
            position.state = 0;
        }, false);
    }
    drag(‘block‘);
</script>
</body>
</html>

 

 

 

 

demo2.html 
<!DOCTYPE html>
<html lang="en">
<body>
<div id="box" class="box" style="width: 100px;height: 100px; position: absolute;background: red;cursor: move;"></div>
<script>
(function () {
  var dragging = false;
  var boxX, boxY, mouseX, mouseY, offsetX, offsetY;
  var box = document.getElementById(‘box‘);
  box.onmousedown = down;
  document.onmousemove = move;
  document.onmouseup = up;
  function down(e) {
    dragging = true;
    boxX = box.offsetLeft;
    boxY = box.offsetTop;
    mouseX = parseInt(getMouseXY(e).x);
    mouseY = parseInt(getMouseXY(e).y);
    offsetX = mouseX - boxX;
    offsetY = mouseY - boxY;
  }
  function move(e) {
    if (dragging) {
      var x = getMouseXY(e).x - offsetX;
      var y = getMouseXY(e).y - offsetY;
      var width = document.documentElement.clientWidth - box.offsetWidth;
      var height = document.documentElement.clientHeight - box.offsetHeight;
      x = Math.min(Math.max(0, x), width);
      y = Math.min(Math.max(0, y), height);
      box.style.left = x + ‘px‘;
      box.style.top = y + ‘px‘;
    }
  }
  function up(e) {
    dragging = false;
  }
  function getMouseXY(e) {
    var x = 0, y = 0;
    e = e || window.event;
    if (e.pageX) {
      x = e.pageX;
      y = e.pageY;
    } else {
      x = e.clientX + document.body.scrollLeft - document.body.clientLeft;
      y = e.clientY + document.body.scrollTop - document.body.clientTop;
    }
    return {
      x: x,
      y: y
    };
  }
})()
</script>
</body>
</html>

 











































































































以上是关于VB.net 实现TreeView控件的拖拽事件的主要内容,如果未能解决你的问题,请参考以下文章

WinForm实现简单的拖拽功能(C#)

vb.net中treeview控件用法

js 实现简单的拖拽

c# 运行时如何用鼠标拖拽放大、缩小控件(像设计器那样的效果)

VB.NET中treeview的使用

在delphi中实现控件的拖拽