Tra*_*ife 22 c# wpf drag-and-drop
拖动从"源"发生到"目标".当源调用带有allowedEffects的DoDragDrop()作为DragDropEffects.Copy时,我可以通过在目标(在DragOver事件中)设置Effects = DragDropEffects.None来取消放置.
但是当我将allowedEffects设置为DragDropEffects.Move时,同样的情况也会失败.
要重现这种情况,请从http://jaimersamples.members.winisp.net/samples/dragdrop/drag.zip下载示例.
更改行..(到DragDropEffects.Move)
DragDrop.DoDragDrop(this.DragSource, data, DragDropEffects.Copy);
Run Code Online (Sandbox Code Playgroud)
添加行..
void Window1_DragOver(object sender, DragEventArgs args)
{
args.Effects = DragDropEffects.None;
Run Code Online (Sandbox Code Playgroud)
并注释掉整个DragSource_GiveFeedback ..
void DragSource_GiveFeedback(object sender, GiveFeedbackEventArgs e)
{
//System.Diagnostics.Debug.WriteLine("DragSource_GiveFeedback " + e.Effects.ToString());
Run Code Online (Sandbox Code Playgroud)
框架中是否存在某种错误,或者我只是看不到明显的错误?
Aar*_*ght 57
在仔细阅读了您的评论和代码之后,通过一些努力,我能够理解并重现您正在讨论的问题.
您缺少的是这条线:
e.Handled = true;
Run Code Online (Sandbox Code Playgroud)
在你的Window1_DragOver活动中.添加它,它将同时适用于DragDropEffects.Move和DragDropEffects.Copy.
为什么DragDropEffects.Copy没有e.Handled首先设置它是有用的是任何人的猜测.无证条件导致无证行为.
我强烈建议您下次发布包含最小可能代码的代码示例以重现问题.我为最初的混淆道歉,但是很难弄清楚这个中发生了什么.
| 归档时间: |
|
| 查看次数: |
13024 次 |
| 最近记录: |