C# 在DragDrop方法中显示通知,而不维护发件人';杜仲
当在C# 在DragDrop方法中显示通知,而不维护发件人';杜仲,c#,.net,winforms,C#,.net,Winforms,当在DragDrop事件处理程序中显示MessageBox(错误)时-拖动操作尚未完成,因此当光标位于桌面上时-它仍然具有拖动图标。我如何防止这种情况 要复制,只需将文件拖动到具有以下内容的表单中:(+AllowDrop=true) 您永远不应该阻止D+D事件,因为它会阻塞拖动源并使其无响应。不恢复光标肯定是一个副作用。您需要在事件完成后运行此类代码。通过使用Control.BeginInvoke()优雅地完成。像这样: protected override void OnDragDro
DragDrop
事件处理程序中显示MessageBox
(错误)时-拖动操作尚未完成,因此当光标位于桌面上时-它仍然具有拖动图标。我如何防止这种情况
要复制,只需将文件拖动到具有以下内容的表单中:(+AllowDrop=true
)
您永远不应该阻止D+D事件,因为它会阻塞拖动源并使其无响应。不恢复光标肯定是一个副作用。您需要在事件完成后运行此类代码。通过使用Control.BeginInvoke()优雅地完成。像这样:
protected override void OnDragDrop(DragEventArgs drgevent) {
this.BeginInvoke(new Action(() => {
MessageBox.Show(this, "Error");
}));
base.OnDragDrop(drgevent);
}
请注意,总的来说,它不应该走这么远。DragEnter事件处理程序应否决删除尝试。如有必要,您可以使用状态条显示轻度诊断。谢谢。是否有任何理由不在事件处理程序中执行此操作(而不是重写OnDragDrop)?如果需要,可以使用事件处理程序。我坚定地站在程序员的阵营中,他们认为一个类听自己的事件是没有意义的。事件用于其他类中的代码。再次感谢。
protected override void OnDragDrop(DragEventArgs drgevent) {
this.BeginInvoke(new Action(() => {
MessageBox.Show(this, "Error");
}));
base.OnDragDrop(drgevent);
}