gpt4 book ai didi

c# - 有没有办法暂停 ActiveX 控件 (MapPoint) 或异步运行 DoDragDrop?

转载 作者:太空宇宙 更新时间:2023-11-03 11:41:18 25 4
gpt4 key购买 nike

我目前正在开发一个带有 MapPoint-Control 的应用程序,这让我很难过。从 mappoint 也使用的线程启动 DoDragDrop 后,我总是在几秒后收到来自 mappoint 的对话框,说我的表单没有反应。

MapPoint-Control 是一个ActiveX-Control,使用该控件MapPoint 在后台启动并在不同的线程中运行。我认为 Mappoint 尝试更新控件但超时。

有没有办法在不同的线程中运行 DoDragDrop,这样 MapPoint 就可以从主线程得到响应。或者是否可以告诉 MapPoint 我的表单当前已暂停。或者我可以以某种方式暂停 MapPoint 吗?

我已经尝试使用表单控件和 MapPoint-Control 运行 DoDragDrop

最佳答案

我发现了问题。

我在 BeforeClick 事件上触发了 DoDragDrop。 MapPoint 可能会等待 Events 回调,但不会得到回调,因为 DoDragDrop 会一直保持 Event 直到鼠标被释放。

现在我已经编写了一个启动 DoDragDrop 事件异步到 MapPoint BeforeClick-Event 的事件。

代码:


public event InitDragDropHandler InitDragDrop;
public delegate void InitDragDropHandler(object sender, object data);

public main()
{
this.InitDragDrop += new InitDragDropHandler(main_InitDragDrop);
}

void mappoint_BeforeClick(object sender, AxMapPoint._IMappointCtrlEvents_BeforeClickEvent e)
{
if (InitDragDrop != null)
{
this.BeginInvoke(new ThreadStart(() =>
{
InitDragDrop(mappoint, pps);
}));
}
}


void main_InitDragDrop(object sender, object data)
{
((Control)sender).DoDragDrop(data, DragDropEffects.Copy);
}

关于c# - 有没有办法暂停 ActiveX 控件 (MapPoint) 或异步运行 DoDragDrop?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4723098/

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