c# - 如何在父窗口中相对于a控件的位置显示Modal窗体(opener)

标签 c# winforms

好吧,我有一个我打开的表单:

ShowDialog(this);

我尝试使用其 Location 属性更改表单的位置,但我不明白这个位置到底是相对于什么?我想在某个按钮下方打开此表单。那么如何才能做到这一点呢?

谢谢。

最佳答案

表单需要相对于屏幕左上角的坐标。但是, 控件在窗体中的位置是相对于窗体左上角的

使用 Control 的 Location 属性找到它的位置,然后调用 Form 对象上的 PointToScreen 将其转换为屏幕坐标。然后您可以相对于它定位新表单。

例如:

var locationInForm = myControl.Location;
var locationOnScreen = mainForm.PointToScreen(locationInForm);

using (var model = new ModelForm())
{
    model.Location = new Point(locationOnScreen.X, locationOnScreen.Y + myControl.Height + 3);
    model.ShowDialog();
}

实际上是表单客户区的左上角。

关于c# - 如何在父窗口中相对于a控件的位置显示Modal窗体(opener),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3540135/

相关文章:

c# - 顶级控件不能添加到控件

c# - 这里有什么问题?在我的代码中(将图像插入数据库 - C#)

c# - 在 C# NET 3.5 中使用组合框属性

c# - 对返回匿名类型的 Response RedirectToRoute 进行单元测试

c# - 鼠标滚轮滚动工具条菜单项

c# - 是什么导致设计器中并非每个事件都可用,我如何才能像在 VB.NET 中一样在 C# 中快速生成处理程序?

c# - 调用 PayPal 经典 API 服务时出错

C# 比较两个对象值

windows - 最好的winform UI组件集是什么?

c# - WinForms 表单卡住