gpt4 book ai didi

c# - 防止在应用程序的单独实例之间进行拖放操作

转载 作者:太空宇宙 更新时间:2023-11-03 11:53:49 24 4
gpt4 key购买 nike

我有一个带有 2 个 DataGridView 的应用程序,并实现了拖放功能以允许用户在它们之间移动数据。在我的应用程序上下文中,在表单的两个实例之间拖动行不是有意义的操作。我不确定如何在拖动输入中检测到它,以便我可以将 e.Effect 设置为 DragDropEffects.None。

如果我不这样做并将其设置为“复制”,则 DragDrop 事件会失败并出现神秘异常“此远程处理代理没有 channel 接收器,这意味着服务器没有正在监听的注册服务器 channel ,或者此应用程序没有合适的客户端 channel 与服务器对话。”

虽然我可以捕获此异常以防止崩溃发生,并中止进程中的实际数据删除,但这样做是不好的做法,并且可能会让用户感到困惑,因为允许删除的光标会显示但不会显示下降会发生。

最佳答案

Microsoft 表示,任何控件都可以接受来自正在进行的拖放操作的数据,并且您可以通过将 AllowDrop 属性设置为 true 来将控件指定为拖放区。我认为,如果在那些您不希望成为拖放区的控件上将 AllowDrop 设置为 false,您应该会获得所需的行为。

如果要检测程序的两个实例之间的拖放,可以在拖放对象中设置一个ID(即在控件的标签中放一个GUID),在拖放过程中检查是否它与您当前正在运行的实例的 GUID 匹配。

http://msdn.microsoft.com/en-us/library/ms973845.aspx

关于c# - 防止在应用程序的单独实例之间进行拖放操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1278129/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com