首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Winforms定位

Winforms定位
EN

Stack Overflow用户
提问于 2013-01-12 17:50:23
回答 3查看 11K关注 0票数 10

我有一个2 forms的应用程序,主窗口和第二个Form

我想要的是在一个Form上打开第二个button click,它的位置必须就在主表单旁边(所以如果主表单是600px wide,那么新FormX将是main.X + 600__)

已经尝试过了,但是它似乎没有被接受,它仍然在主表单之上打开:

代码语言:javascript
复制
private void button1_Click(object sender, EventArgs e)
{
    var form = new SecondForm();
    var main = this.Location;
    form.Location = new Point((main.X + 600), main.Y);
    form.Show(); 
}

Location不是正确的属性吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-12 17:54:29

将表单的StartPosition设置为FormStartPosition.Manual。您可以在设计器中或从构造函数中这样做:

代码语言:javascript
复制
StartPosition = FormStartPosition.Manual;
票数 16
EN

Stack Overflow用户

发布于 2013-01-12 18:38:03

显然,您不依赖于StartPosition属性。然而,将其更改为手动并不是正确的修复方法,您加载的第二种形式很可能会在另一台具有不同视频DPI设置的机器上重新出现。这几天很普遍。这反过来可以改变它的位置属性。

正确的方法是等待Load事件启动,然后重新调整标度,此时窗口还不可见。这是把它移到正确的地方的最佳时机。StartPosition现在已经不再重要了。如下所示:

代码语言:javascript
复制
        var frm = new SecondForm();
        frm.Load += delegate {
            frm.Location = new Point(this.Right, this.Top);
        };
        frm.Show();
票数 5
EN

Stack Overflow用户

发布于 2013-01-12 17:54:45

Location是right属性,但必须设置

代码语言:javascript
复制
Form.StartPosition = FormStartPosition.Manual;

也是。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14296137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档