我希望我的应用程序等待鼠标点击然后继续。 我的申请基本上是这样的:
static class SomeClass {
bool clicked = false;
//some Code....
//activate MouseUp Event & wait for mouse click
_app.Application.MouseUp += MouseEventOnShape;
//continue with the filled list after mouse click happened
if(clicked) {
//do something with list
}
}
我的MouseEvent看起来像这样:
private static void MouseEventOnShape(int button, int keybuttonstate, double
x, double y, ref bool canceldefault) {
clicked = true;
// some code to do and fill a list
}
但是,应用程序不会等待鼠标点击将bool设置为true。
有人可以帮忙吗?
答案 0 :(得分:0)
如果你想要某个类(实际上是它的方法)等待点击,你可能想要使用ManualResetEvent
,这将暂停方法执行直到它被点击。但在这里,您必须关心阻止UI线程。请按原样尝试调用WaitForClick
方法。如果您的应用程序完全冻结,则必须以其他方式调用它,例如在后台线程中。
参见示例:
private ManualResetEvent _waiter = new ManualResetEvent(false);
private void OnApplicationClick(object sender, EventArgs e)
{
_waiter.Set();
}
private void WaitForClick()
{
_app.Application.Click += OnApplicationClick;
_waiter.WaitOne();
// do something after click
}
编辑:您可以直接在事件处理程序中填写您的列表:
private void OnMouseUp(...)
{
Invoke(new Action(() =>
{
// fill your list here
}));
}
private void RegisterListener()
{
_app.Application.MouseUp += OnMouseUp;
}