Winforms 是否可以激活已禁用的Windows窗体?

Winforms 是否可以激活已禁用的Windows窗体?,winforms,Winforms,我有一个奇怪的问题,在我们的应用程序的两个不同版本中,禁用表单的反应是不同的 在最近的一个例子中,当禁用表单时,您不能给它焦点。当我点击一个被禁用的表单时,你可以听到铃声。未触发激活的事件 然而,在以前的版本中,禁用同一个表单并不能阻止我将焦点放在选择它上。因此,将触发OnActivated事件 首先,什么是正常的行为?我并没有在代码中做任何事情来阻止窗体被激活或获得焦点,所以我猜当窗体被禁用时,Windows窗体框架会执行一些逻辑 第二,是什么导致了差异?可能是版本-操作系统版本/补丁级别、.

我有一个奇怪的问题,在我们的应用程序的两个不同版本中,禁用表单的反应是不同的

在最近的一个例子中,当禁用表单时,您不能给它焦点。当我点击一个被禁用的表单时,你可以听到铃声。未触发激活的事件

然而,在以前的版本中,禁用同一个表单并不能阻止我将焦点放在选择它上。因此,将触发OnActivated事件

首先,什么是正常的行为?我并没有在代码中做任何事情来阻止窗体被激活或获得焦点,所以我猜当窗体被禁用时,Windows窗体框架会执行一些逻辑


第二,是什么导致了差异?

可能是版本-操作系统版本/补丁级别、.NET framework版本/补丁级别的细微差异。。。这是在完全相同的版本上发生的吗?是的,它在同一台机器上,我的开发机器上。应用程序的两个版本之间存在一些差异,但没有一个可以解释这些差异……这从来都不是不同的。闪烁和闪烁是在Windows中实现的,而不是在Winforms中实现的。底层本机winapi调用是EnableWindow。对于以前版本的行为,最简单的解释是,无论出于何种原因,该窗口都没有被禁用。Hans:如果注意到这是正常的行为,你能给我指一篇msdn/windows文章吗?我会仔细看看我们的“前一版本”有什么不同。我实际上也在做同样的事情来禁用前一个版本中的表单,但可能其他一些逻辑正在做一些额外的事情。。。