我有一个文件列表,其列表框中包含其名称,其内容存储在SQL表中,并希望我的应用程序的用户能够在列表框中选择一个或多个文件名并将其拖到桌面上,从而产生桌面上的实际文件.我找不到有关如何执行此操作的任何文档.谁能解释或指出解释?
稍后添加:我已经能够通过处理DragLeave事件来完成这项工作.在其中,我在临时目录中创建一个文件,其中包含所选名称和从SQL Server中提取的内容.然后我将文件的路径放入对象:
var files = new string[1];
files[0] = "full path to temporary file";
var dob = new DataObject();
dob.SetData(DataFormats.FileDrop, files);
DoDragDrop(dob, DragDropEffects.Copy);
Run Code Online (Sandbox Code Playgroud)
但这似乎非常低效和笨拙,我还没有想出一个摆脱累积的临时文件的好方法.
在TreeNode拖放操作正在进行的同时,.Net 2.0中是否有任何内置函数可以扩展?
我在Visual Studio 2005中使用C#.
我已经Treeview使用多级多线树(想想组织结构图或文件/文件夹对话框)填充了一个控件,我想使用拖放来移动树中的节点.
拖放代码运行良好,我可以放到任何可见节点上,但我希望我的控件在Windows资源管理器窗格上拖动文件时的行为就像Windows资源管理器一样.具体来说,我希望每个文件夹打开,如果徘徊1/2秒左右.
我已经开始使用Threading和一种Sleep方法开发一个解决方案,但我遇到了问题,并且想知道是否已经存在某些问题,如果不是,我会指责并学习如何使用线程(这是关于时间的,但我希望快速获取此应用程序)
我是否需要编写自己的代码来处理TreeNode在拖放模式下盘旋时的扩展?
我想通过O.Reilly-Swing.Hacks Hack 69的预览实现一个简单的JComponent-Drag-and-Drop .半透明的拖放.我的问题是如果TransferHandler启动拖动MouseMotionListener停止执行mouseDragged().
这是一个小示例代码:
一个带绿色和红色边的小窗户.绿色侧不会启动拖动,始终执行mouseDragged()但不会达到exportDone().
红色Side通过exportAsDrag()启动Drag,但之后mouseDragged()将不再起作用.
public class Drag extends JPanel implements Transferable, MouseMotionListener, MouseListener {
public Drag() {
this.setTransferHandler( new TransferHandler() {
@Override
protected Transferable createTransferable( JComponent c ) {
return (Drag)c;
}
@Override
public boolean canImport( JComponent comp, DataFlavor[] transferFlavors ) {
return false;
}
@Override
public int getSourceActions( JComponent c ) {
return MOVE;
}
@Override
protected void exportDone( JComponent source, Transferable data, int action ) {
super.exportDone( source, data, action );
System.out.println( "done" …Run Code Online (Sandbox Code Playgroud) 我得到以下代码(来自Ed Burnette的Hello android)工作得很好,我能够拖动和缩放图像.
import android.app.Activity;
import android.graphics.Matrix;
import android.graphics.PointF;
import android.os.Bundle;
import android.util.FloatMath;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.ImageView;
public class Touch extends Activity implements OnTouchListener {
private static final String TAG = "Touch";
// These matrices will be used to move and zoom image
Matrix matrix = new Matrix();
Matrix savedMatrix = new Matrix();
// We can be in one of these 3 states
static final int NONE = 0;
static final int DRAG = …Run Code Online (Sandbox Code Playgroud) 我正在编写一个使用OpenLayers的应用程序,使用户能够将文件拖放到一组预定义的功能,这些功能将通过AJAX发送到服务器.文件本身是来自地球物理设备的原始数据,将由服务器呈现为栅格图层.
我为地图拖放工作:
var mapelem = $id("map");
mapelem.addEventListener("dragover", FileDragHover, false);
mapelem.addEventListener("dragleave", FileDragHover, false);
mapelem.addEventListener("drop", FileSelectHandler, false);
Run Code Online (Sandbox Code Playgroud)
我强调悬停使用此代码:
var sf = new OpenLayers.Control.SelectFeature(boxes, {
hover: true,
multiple: false,
highlightOnly: true
});
map.addControl(sf);
sf.activate();
Run Code Online (Sandbox Code Playgroud)
其余代码主要是Boxes Example - Vector.
问题是当将文件拖到地图画布上时,OpenLayers悬停选择不再有效,我希望它给用户提供反馈,以确保他们将文件丢弃到他们期望的位置.
我可以在画布上获取光标的位置:
map.events.register("mousemove", map, function(e) {
lonlat = map.getLonLatFromPixel(e.xy);
});
Run Code Online (Sandbox Code Playgroud)
所以我可以在该函数中进行一个功能点测试,但能够使用现有的功能会很好.
有什么方法可以将拖动消息传播到我的OpenLayers层吗?
我正在实现拖放功能TTreeView.在OnStartDrag它的事件上,我正在创建DragOcject我的派生类:
TTreeDragControlObject = class(TDragObject)
private
FDragImages: TDragImageList;
FText: String;
protected
function GetDragImages: TDragImageList; override;
end;
procedure TfrmMain.tvTreeStartDrag(Sender: TObject;
var DragObject: TDragObject);
begin
DragObject := TTreeDragControlObject.Create;
TTreeDragControlObject(DragObject).FText := tvTree.Selected.Text;
end;
Run Code Online (Sandbox Code Playgroud)
这是我的覆盖GetDragImages函数DragObcject:
function TTreeDragControlObject.GetDragImages: TDragImageList;
var
Bmp: TBitmap;
begin
if FDragImages = nil then
begin
FDragImages := TDragImageList.Create(nil);
Bmp := TBitmap.Create;
try
Bmp.Width := Bmp.Canvas.TextWidth(FText) + 25;
Bmp.Height := Bmp.Canvas.TextHeight(FText);
Bmp.Canvas.TextOut(25, 0, FText);
FDragImages.Width := Bmp.Width;
FDragImages.Height := Bmp.Height;
FDragImages.SetDragImage(FDragImages.Add(Bmp, nil), 0, …Run Code Online (Sandbox Code Playgroud) 我有简单的ol-li构造,想要添加拖拽它.另外我想突出显示不同颜色的悬停项目和dragover项目.但它在WebKit中是一个不寻常的错误.
最后一个元素捕获悬停伪类!为什么?我该怎样预防呢?

这是一个例子:
var lis = document.querySelectorAll("li"),
ol = document.querySelector("ol"),
dragged = false,
dragover = false;
ol.addEventListener("drop", function(event) {
ol.insertBefore(dragged,dragover);
this.classList.remove("insistent");
}, false);
for (var i=0, n = lis.length; i < n; i++) {
lis[i].addEventListener("dragstart", function(event) {
dragged = this;
ol.classList.add("insistent");
}, false);
lis[i].addEventListener("dragover", function(event) {
if (dragover) {
dragover.classList.remove("dragover");
}
event.preventDefault();
dragover = this;
this.classList.add("dragover");
}, false);
}
Run Code Online (Sandbox Code Playgroud) 我在w3schools上发现这个代码用于拖放,它可以在桌面上运行,但不适用于移动设备.
我需要修改什么才能识别触摸?
<!DOCTYPE HTML>
<html>
<head>
<style type="text/css">
#div1 {width:350px;height:70px;padding:10px;border:1px solid #aaaaaa;}
</style>
<script>
function allowDrop(ev)
{
ev.preventDefault();
}
function drag(ev)
{
ev.dataTransfer.setData("Text",ev.target.id);
}
function drop(ev)
{
ev.preventDefault();
var data=ev.dataTransfer.getData("Text");
ev.target.appendChild(document.getElementById(data));
}
</script>
</head>
<body>
<p>Drag the W3Schools image into the rectangle:</p>
<div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
<br>
<img id="drag1" src="img_logo.gif" draggable="true" ondragstart="drag(event)" width="336" height="69">
</body>
</html>
Run Code Online (Sandbox Code Playgroud) 我已经成功地拖延了我的工作NSCollectionView,但是视觉外观和行为存在一些问题.主要问题是放置区/占位符的大小错误,即它小于集合视图的大小minItemSize.我已经搜索了文档,但看不出任何指定方法.
我的第二个问题是,我希望单元格图像在被拖动时实际移动,而不是仅仅具有半透明副本.
这是当前的行为:

这是我想要的行为(在Sketch中使用):

任何建议将不胜感激.如果任何代码有用,请告诉我 - 我不确定哪些部分与解决这个问题相关.谢谢!
我正在创建一个食物菜单,管理员可以通过拖放来订购/排序.此菜单包含多个类别(ProductCategory)和产品(Product).
我在客户端使用HTML5Sortable来允许嵌套的d&d.标记非常简单:
<div class="categories">
@foreach($categories as $category)
<div class="category">
@foreach($category->products as $product)
<div class="products">
<div class=""product" data=id="{{ $product->id }}">
{{ $product->name }}
</div>
</div><!-- /products !-->
@endforeach
</div><!-- /category !-->
@endforeach
</div>
Run Code Online (Sandbox Code Playgroud)
和相应的javascript:
$('.categories').sortable({
items: '.category'
});
$('.products').sortable({
items: '.product'
});
// Will be called when the user is done repositioning the products and categories
function getOrderedList() {
var data = {};
$('.categories').find('.category').map(function(i) {
var category = $(this);
data[i] = {};
data[i].id = category.data('id');
data[i].products = category.find('.product').map(function() { …Run Code Online (Sandbox Code Playgroud)