c# - Listview拖放在目标上没有视觉突出显示
问题描述
我是旧版获胜表单应用程序的新手。它有一个带有文件和文件夹结构的列表视图。我想允许用户将文件拖到文件夹中。当我这样做时,我想找到目的地(为此,我在 x 和 y 处找到项目),但也给用户一个视觉表示,他们将其放在文件夹中(如在 Windows 资源管理器中)。
解决方案
在 private void myListView_DragOver(object sender, DragEventArgs e) 我调整了您评论中的代码@HansPassant
var wPos = this.myListView.PointToClient(new Point(e.X, e.Y));
var targetItem = myListView.GetItemAt(wPos.X, wPos.Y);
if (targetItem != null)
{
var targetNodeInfo = targetItem.Tag as WindowsExplorerModel;
if (targetNodeInfo != null) //if dropping on a target item
{
if (targetNodeInfo.isFile)
e.Effect = DragDropEffects.None;//if IsFile
else
{
foreach (ListViewItem listItem in myListView.SelectedItems)
listItem.Selected = false;
targetItem.Selected = true;
e.Effect = DragDropEffects.Copy;
}
return;
}
}
推荐阅读
- java - Collectors.toList()返回的列表类型如何选择?
- ruby-on-rails - dotenv 是否会覆盖 docker compose 设置的环境变量?
- linux - 显示具有正则表达式超过“n”次的文件行
- chromium - 用 yocto 运行 Chromium
- java - 当一次为 REST 发送 200 个请求时,我们遇到了 pessimisticlock 异常
- autodesk-forge - Autodesk Forge 修改您的模型教程,没有可供选择的现有活动
- python - 如何在 csv 输出中合并列表
- c++ - std::vector 清除或与新向量交换
- java - Spring Boot Test 无法解析存储库依赖项
- javascript - 如何使用 useBuiltIns 排除 core-js:“用法”