我正在调试我的应用程序,它在Visual Studio 2010中具有拖放功能.我必须以特权模式运行IDE,因为我的一些项目需要这样做.
我的问题:
我可以在正常运行.exe文件时拖放(从Windows资源管理器(WE)运行),但在VS2010中进行调试时,我无法在我的应用程序和WE之间进行拖放操作.
我试图在特权模式下打开WE,但仍然无法调试.
你有同样的问题吗?如果你这样做,你有任何解决方法吗?请分享.
privileges drag-and-drop windows-explorer visual-studio-2010
我有一个注册拖动操作的NSView.
在该视图中,我有一个子类NSScrollView,它本身有一个NSImageView.
当拖动到原始的NSView上时,一切都很好,除了当我拖动前面提到的NSImageView时,它似乎插入了拖动并且我不能掉到它上面(或者实际上是它下面的视图.
NSScrollView似乎忽略了拖动并允许它进入底层NSView,但是我如何为NSImageView执行此操作以便拖放注册自身,它的superview(NSScrollView)和底层NSView.
我有一个NSView子类,它在init方法中注册拖动文件,如下所示:
[self registerForDraggedTypes:[NSArray arrayWithObject:NSFilenamesPboardType]];
Run Code Online (Sandbox Code Playgroud)
拖放工作完全正常,但如果我使用完全相同的框架向该视图添加子视图,它将不再起作用.我的猜测是子视图阻止拖动事件进入超级视图.我可以避免吗?谢谢
另外,我知道我问了两个问题,但我不想为此创建一个新主题:当我拖动时,我的光标不会像其他拖动一样变为"+"符号,我该怎么办?去做?再次感谢.
更新:以下是我在IB中设置的方式:

DrawView是我所说的为draggedtypes注册的自定义类.图像视图只是一个子视图,我从媒体部分拖动了一个图像...如果它有帮助,这是我的DragView的相关代码:
- (NSDragOperation)draggingEntered:(id <NSDraggingInfo>)sender {
return NSDragOperationCopy;
}
- (BOOL)performDragOperation:(id <NSDraggingInfo>)sender {
NSPasteboard *pboard;
pboard = [sender draggingPasteboard];
NSArray *list = [pboard propertyListForType:NSFilenamesPboardType];
if ([list count] == 1) {
BOOL isDirectory = NO;
NSString *fileName = [list objectAtIndex:0];
[[NSFileManager defaultManager] fileExistsAtPath:fileName
isDirectory: &isDirectory];
if (isDirectory) {
NSLog(@"AHH YEA");
} else {
NSLog(@"NOO");
}
}
return YES;
}
Run Code Online (Sandbox Code Playgroud) 我想将放置区背景颜色更改为绿色或红色,具体取决于所包含的有效负载拖动是否包含支持的文件类型(JPEG).
Gecko和Webkit是否支持确定拖放文件的文件类型?
如何在这两个浏览器中提取文件类型?
我找到了event.dataTransfer.types API,但对于Firefox来说,它似乎填充了application/x-moz-file,因此我觉得我做错了.
以下代码:
<!DOCTYPE HTML>
<html>
<head>
<style type="text/css">
#div1 {width:350px;height:70px;padding:10px;border:1px solid #aaaaaa;}
</style>
<script>
function allowDrop(ev)
{
console.log(ev.dataTransfer.getData("Text"));
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)
使用Firefox正确获取dataTransfer对象并在执行event 调用drag1的allowDrop函数时返回图像的id()ondragover,但在Chrome中getData返回一个空字符串.这是一个错误还是Chrome只返回活动的有效dataTransfer对象ondrop?
我遇到了有关使用拖放重新排序JList中的元素的问题.以下代码是对代码的修改,您可以将元素从一个JList拖动到另一个JList(仅以一种方式工作).我试图让它只用于一个JList,但是元素甚至不能被拖出列表.所以我想这不可能这样做.我有什么不对的想法?
我的想法是让它为带有缩略图的Jlist工作,但因为我甚至无法让它只用于字符串...我一直在研究几个D'n'D教程,但我仍然不能让它工作.任何帮助表示赞赏.
import javax.swing.*;
import javax.swing.border.*;
import java.awt.*;
import java.awt.datatransfer.*;
import java.io.IOException;
public class DragAndDrop extends JFrame {
DefaultListModel<String> transport = new DefaultListModel<String>();
JList<String> transportList = new JList<String>(transport);
public DragAndDrop() {
setLayout(new FlowLayout());
transport.addElement("Bike");
transport.addElement("Car");
transport.addElement("Truck");
transport.addElement("Boat");
JScrollPane transportScroll = new JScrollPane(transportList);
transportScroll.setBorder(new TitledBorder("Transportation"));
add(transportScroll);
transportList.setDragEnabled(true);
transportList.setTransferHandler(new TransferHandler() {
int index;
@Override
public int getSourceActions(JComponent comp) {
return COPY_OR_MOVE;
}
@Override
public Transferable createTransferable(JComponent comp) {
index = transportList.getSelectedIndex();
return new StringSelection(transportList.getSelectedValue());
}
@Override
public void exportDone( JComponent comp, Transferable …Run Code Online (Sandbox Code Playgroud) 我正在制作一个游戏应用程序,我需要使用ondraglistener进行拖放,这是我在实现onDraglistener的类上所做的.
@Override
public boolean onDrag(View v, DragEvent event) {
switch (event.getAction()) {
case DragEvent.ACTION_DRAG_STARTED:
Log.v("here","drag started");
//no action necessary
break;
case DragEvent.ACTION_DRAG_ENTERED:
//no action necessary
Log.v("here","drag enteres");
break;
case DragEvent.ACTION_DRAG_LOCATION:
int mCurX = (int) event.getX();
int mCurY = (int) event.getY();
Log.v("Cur(X, Y) : " ,"here ::" + mCurX + ", " + mCurY );
break;
case DragEvent.ACTION_DRAG_EXITED:
//no action necessary
Log.v("here","drag exits");
break;
case DragEvent.ACTION_DROP:
.................do what ever when dropped...
}
Run Code Online (Sandbox Code Playgroud)
这里我正在做一个关于拖放视图的touchlistener:
public boolean onTouch(View view, MotionEvent motionEvent) {
if …Run Code Online (Sandbox Code Playgroud) 我有一个RecyclerView - Grid,拖放,使用这个代码我已经设法实现了,并做了很多改变,只有一个问题,我无法保存拖动项目位置重新启动(应用程序不是电话 ).我想到的是将"int position"添加到我的item.java构造函数中,但我不能做的是获取更改的位置.
我正在使用链接中提供的相同拖放代码.
ItemTouchHelper.Callback _ithCallback = new ItemTouchHelper.Callback() {
//and in your imlpementaion of
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
// get the viewHolder's and target's positions in your adapter data, swap them
Collections.swap(AllItems, viewHolder.getAdapterPosition(), target.getAdapterPosition());
// and notify the adapter that its dataset has changed
rcAdapter.notifyItemMoved(viewHolder.getAdapterPosition(), target.getAdapterPosition());
return true;
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
//TODO
}
//defines the enabled move directions in each state (idle, swiping, dragging). …Run Code Online (Sandbox Code Playgroud) 我想要实现的目标:我希望在一个可滚动的布局(Recyclerviewwith GridlayoutManager)中有一个视图,其中包含tile(Views).拖放项目内部的项目RecyclerView应调整图标的位置并与其他元素交换.拖动开始时,上方的图标RecyclerView将更改为垃圾桶图标,将视图拖动到此图标将从中删除它RecyclerView.
我尝试了这个优秀的教程,但我没有找到一种方法如何处理拖动外部Recyclerview作为ItemTouchHelper.Callback仅使用Recycler.ViewHolder元素作为可能的目标.
interpolateOutOfBoundsScroll()如果视图移出边界,该方法会给出反馈,但只返回屏幕外的总大小,但没有坐标.此外,尝试将视图拖出Recyclerview总是导致切割视图通过其边界Recyclerview.
有谁知道我怎么能达到这个效果?
android drag-and-drop gridlayoutmanager android-recyclerview
我一直在关注这个链接的指南"使用RecyclerView拖动和滑动 - 由IPaulPro",我在某些情况下遇到的问题很少.
所以,我基本上完成了他解释的所有内容+我在项目中添加了一个TextView,表示RecyclerView中项目的位置,如下所示:

一切都很好看,除非我开始"快速射击"物品,然后我有两个问题:
我所做的也是notifyAdapterSetChanged()在
onItemClear()方法中使用- 它以某种方式修复它,但导致了
IllegalStateException捕获 - 会导致
IndexOutOfBounds异常.
我将在下面粘贴我的整个适配器代码,其中必须存在缺陷.
LayoutInflater inflater;
Context context;
AndroidEntityQuestionResult androidEntityQuestionResult;
ArrayList<AndroidEntityAnswer> list = new ArrayList<>();
ORDLayoutManagerQuestion ord;
ScreenDimensionsConstants sdc;
public OrderingRecycleAdapter(Context context, AndroidEntityQuestionResult androidEntityQuestionResult, ORDLayoutManagerQuestion ord) {
inflater = LayoutInflater.from(context);
this.context = context;
this.list = androidEntityQuestionResult.getAndroidEntityQuestion().getEntityAnswer();
this.androidEntityQuestionResult = androidEntityQuestionResult;
this.ord = ord;
sdc = new ScreenDimensionsConstants(context);
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.custom_row_ordering_rv, parent, false);
final …Run Code Online (Sandbox Code Playgroud) drag-and-drop ×10
android ×4
cocoa ×2
html5 ×2
nsview ×2
objective-c ×2
java ×1
java-7 ×1
javascript ×1
jlist ×1
macos ×1
privileges ×1
swing ×1