这是一个让子窗体显示在父窗体中心的帮助类,用法很简单,只需要在Show出窗体前,调用FormHelper的方法CenterChild(),指定父窗体即可。此方法对MessageBox同样有效。
例如:
FormHelper.CenterChild(this);
Messagebox.Show("子窗体测试");
详细代码如下:
/// <summary>
/// 窗体扩展功能:
/// 1.让下一个弹出子窗体自动显示在父窗体中心
/// </summary>
public static class FormHelper
{
/// <summary>
/// 子窗体自动显示在父窗体中心位置
/// </summary>
/// <param name="owner">要中心化子窗体的窗体</param>
/// <remarks>扩展方法</remarks>
public static void CenterChild(this IWin32Window owner)
{
CenterChildHelper helper = new CenterChildHelper();
helper.Run(owner);
}
/// <summary>
/// 基于Hook实现子窗体自动显示在父窗体中心位置
/// </summary>
private class CenterChildHelper
{
private const Int32 WH_CBT = 5;
private const Int32 HCBT_ACTIVATE = 5;
private const Int32 GWL_HINSTANCE = -6;
private IntPtr _hhk;
// 钩子句柄
private IntPtr _parent;
// 父窗体句柄
private G

1万+

被折叠的 条评论
为什么被折叠?



