void SetDialogLocationAtPoint(Form TheDialog, IPoint ThePoint) { int iX = 0; int iY = 0; int iX2 = 0; int iY2 = 0; IDisplayTransformation pDispTr = ArcMap.Document.ActiveView.ScreenDisplay.DisplayTransformation; pDispTr.FromMapPoint(ThePoint, out iX, out iY); IntPtr hWnd = (IntPtr)ArcMap.Document.ActiveView.ScreenDisplay.hWnd; NativeMethods.RECT rect = new NativeMethods.RECT(); if (NativeMethods.GetWindowRect(hWnd, ref rect)) { iX2 = rect.Left; iY2 = rect.Top; } int iLeft = iX + iX2 - (TheDialog.Width / 2); int iTop = iY + iY2 - (TheDialog.Height / 2); TheDialog.StartPosition = FormStartPosition.Manual; TheDialog.Location = new System.Drawing.Point(iLeft, iTop); }