winforms 延迟或短暂暂停Windows消息

dwbf0jvd  于 2023-02-24  发布在  Windows
关注(0)|答案(4)|浏览(149)

我的应用程序中有一个Winforms DataGridView。当用户选择一行并按Enter键时,我会加载一个新的表单,其中包含与该行相关的详细信息。获取数据并显示屏幕大约需要一秒钟。有些用户速度很快,他们开始输入与表单相关的按键,例如Pg Down/Pg Up。甚至在它加载之前,并抱怨网格向下滚动,而不是在加载的窗体上看到预期的效果。
我需要一种方法来暂停击键消息从被处理,直到加载的形式。任何想法高度赞赏。

w46czmvw

w46czmvw1#

您可以捕获WM_KEYDOWN消息,并在表单正在加载时忽略它(可能设置了一个标志),或者您可以将消息发布到当前正在加载的表单中。
请查看IMessageFilter

yiytaume

yiytaume2#

不是解决方案,而是不同的方法:当用户选择一行并按Enter键时,您现在会做什么?
1.显示窗体并加载数据
1.装入数据并显示表格
选项1最好与加载图标/消息结合使用。如果你真的需要启用击键,那么当你完成加载时,捕获它们并重新启动它们。新表单将接收击键,因为它是最上面的并且是活动的(如果正确完成的话)。

wribegjk

wribegjk3#

不能将enabled属性设置为false,然后在加载数据后再设置回true吗?

4jb9z9bj

4jb9z9bj4#

一个简单的布尔值检查就可以了。
创建一个bool,命名为“busy”,当按下回车键时,检查它是否为true。

if (!busy)
{
busy = true;
//do your thing
}

加载完成后,只需再次将其检查回false即可

相关问题