如何创建与其他控件位置相同的弹出窗体

本文关键字:位置 窗体 控件 其他 何创建 创建 | 更新日期: 2023-09-27 18:25:00

我在MSDN上读过关于Control.PointToClientControl.PointToScreen的文章。

但是,如果我有这个控制层次结构,当Button单击时,如何显示与TextBox相同位置的另一个窗体?

+- Form
+--- Panel
+---- Panel
+------ TextBox
+------ Button

如何创建与其他控件位置相同的弹出窗体

使用具有空点(0,0)的PointToScreen来获得控件相对于屏幕的位置,然后只在那里显示表单(确保StartPositionManual):

Point controlPosition = myTextBox.PointToScreen(Point.Empty);
MyForm newForm = new MyForm();
newForm.Location = controlPosition;
newForm.Show(this);

如果将新表单显示为showdialog,则需要使用:

newForm.StartPosition = FormStartPosition.Manual;