仅具有 parentWnd 的父级中的中心表单

Center form in parent only having the parentWnd

我正在使用 Solidworks Pdm Api 并且我正在使用 Windows 表单开发插件以显示有关某些文件的信息。

在 api 文档中,建议使用此 class 将 Pdm window 设置为父级

public class WindowHandle : IWin32Window
{
    private IntPtr mHwnd;

    public WindowHandle(int hWnd)
    {
        mHwnd = new IntPtr(hWnd);
    }
    public IntPtr Handle
    {
        get { return mHwnd; }
    }
}

它运作良好,所以,当我展示我的表格时,我正在做下一个

//i recived hWnd parameter from the api
WindowHandle myHandle = new WindowHandle(hWnd);
var weForm = new myForm();
weForm.StartPosition = FormStartPosition.CenterParent;
weForm.ShowDialog(myHandle);

至此,表格显示没有问题,Pdm Window 实际上是父级,但表格没有居中。

我发现 this question 关于如何在他的父项中居中表单,但显然任何人都可以使用从 IWin32Window 继承的自定义 class。

如何使表格居中?

如果自动居中功能不起作用,那么您需要自己计算一下。

数学基本上意味着你对齐每个window的中心点。

int left = parentBounds.Left + (parentBounds.Width / 2) - (childBounds.Width / 2);
int right = parentBounds.Top + (parentBounds.Height / 2) - (childBounds.Height / 2);