我是c#.NET Compact Framework 3.5的新手。
我正在尝试阻止急切用户排队的鼠标事件。这有时会导致意外点击。
在.NET Compact Framework平台上忽略排队鼠标消息的最佳方法是什么?遗憾的是,代码必须在UI线程上运行。
我试过了: 1.禁用窗口和Application.DoEvents();然后启用窗口 - >那没起效。 我读了很多关于PeekMessage()的信息 - >但是想不出来。
请推荐我可以学习的资源。
非常感谢你。
答案 0 :(得分:2)
感谢Google和其他人,我使用了PeekMessage()..我会发布一个代码(可能会帮助一些代码。)
private const uint PM_REMOVE = 0x1;
private const uint WM_MOUSEFIRST = 0x0200;
private const uint WM_MOUSELAST = 0x0209;
private const uint WM_QUIT = 0x0012;
private struct Message
{
long hwnd;
long message;
long wParam;
long lParam;
long time;
Point pt;
}
#if WindowsCE
[DllImport("coredll.dll")]
#else
[DllImport("Kernel32.dll")]
#endif
private extern static bool PeekMessage(out Message Msg, IntPtr hWnd, uint wMsgFilterMin, uint wMsgFilterMax, uint wRemoveMsg);
public void ClearMouseClickQueue()
{ Message msg;
while (PeekMessage(out msg, IntPtr.Zero, WM_MOUSEFIRST,WM_MOUSELAST, 1) != false){ }}
那是......很酷吧......
答案 1 :(得分:1)
像这样的东西
class MyForm : Form
{
private bool _processing;
private void OnMousedown(....) // really depends on what you use,
// Click/doubleclick/Up/down - concept is the same
{
if (_processing)
return;
_processing = true;
// do something
. . . . . .
_processing = false;
}
. . . . .
您可能需要在每个控制事件
上执行此操作答案 2 :(得分:1)
禁用触摸输入的另一个选项是使用带有小窗口(元素)的TouchRegisterWindow和TouchUnregisterWindow。这可用于禁用当前对话框中的所有点击,而无需逐个禁用所有元素。
http://www.hjgode.de/wp/2012/09/24/windows-mobile-disable-touch-input/
的详细信息