在项目中,有时对界面的控制是这样的,需要在当前界面操作未完成时不允许另外的界面进行操作,于是有了下面的代码:
1/// <summary>
2/// 控制系统维护界面当点击按钮时,对界面进行暂时锁定
3/// Add by: Maxc
4/// </summary>
5public class SetUserControlEnable
6{
7[DllImport("user32.dll")]
8private static extern int SetWindowLong(IntPtr hWnd, int nIndex, int wndproc);
9
10[DllImport("user32.dll")]
11private static extern int GetWindowLong(IntPtr hWnd, int nIndex);
12
13private const int GWL_STYLE = -16;
14private const int WS_DISABLED = 0x8000000;
15
16private static void SetControlEnabled(Control c, bool enabled)
17{
18if (enabled)
19{ SetWindowLong(c.Handle, GWL_STYLE, (~WS_DISABLED) & GetWindowLong(c.Handle, GWL_STYLE)); }
20else
21{ SetWindowLong(c.Handle, GWL_STYLE, WS_DISABLED + GetWindowLong(c.Handle, GWL_STYLE)); }
22}
23
24当点击按钮的时候,让所有界面都被锁定 private void LockAllInterface()
35
36点击之后,所有界面都被解锁 private void UnlockAllInterface()
47}
通过上述代码就可实现想要的效果了。