将非模态窗体重新父级到现有应用程序

4

我希望能够在一个已经存在的应用程序中显示一个非模态表单。目前,我可以做到如下:

myform.ShowDialog(handleToApp);

但是,这将创建一个模态表单,该表单作为应用程序的父级存在。而我真正想要的是非模态表单,这样当表单失去焦点时,它不会打断控件流程并骚扰用户,告诉他没有关闭。

有人知道我是否可以实现我想要的吗?

@Nathan W:不知道,我只是把它投了一票。 - George Stocker
2个回答

2
我找到了我想要的,你需要创建一个类,它应该像这样:
public class MapinfoWindowHandle : System.Windows.Forms.IWin32Window
    {
        private IntPtr handle;
        public MapinfoWindowHandle(IntPtr hWnd)
        {
            handle = hWnd;
        }

        #region IWin32Window Members

        IntPtr System.Windows.Forms.IWin32Window.Handle
        {
            get { return handle; }
        }

        #endregion
    }

然后你可以这样做:

IntPtr windowhandle = new IntPtr(hWnd);
MyForm.Show(new MapinfoWindowHandle(windowhandle));

+1 无法感谢你的足够了..我必须在 ArcMap 中完成这个任务,而它拯救了我的一天!! - vinayan

-1

那么一个简单的 myForm.Show() 怎么样?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接