Winforms位置

sd_*_*ula 10 c# winforms

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

我想要的是Form在a上打开第二个button click,它的位置必须在主窗体旁边(所以如果主窗体是600px宽的X,那么新的Form将是main.X + 600)

试过这个,但它似乎没有采取,它仍然在主窗体的顶部打开:

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(); 
}
Run Code Online (Sandbox Code Playgroud)

Location不是正确的属性?

Mir*_*Mir 16

将表单设置StartPositionFormStartPosition.Manual.您可以在设计器中或从构造函数中执行此操作:

StartPosition = FormStartPosition.Manual;
Run Code Online (Sandbox Code Playgroud)


Han*_*ant 6

显然你没有指望StartPosition属性.但是,将其更改为手动不是正确的修复,您加载的第二种形式可能会在具有不同视频DPI设置的另一台机器上重新调整自身.这些天很常见.这又可以改变其Location属性.

正确的方法是等待Load事件触发,然后重新缩放,窗口仍然不可见.哪个是在正确的地方移动它的最佳时间.StartPosition现在不再重要.像这样:

        var frm = new SecondForm();
        frm.Load += delegate {
            frm.Location = new Point(this.Right, this.Top);
        };
        frm.Show();
Run Code Online (Sandbox Code Playgroud)


Ham*_*yan 5

Location是正确的属性,但您必须设置

Form.StartPosition = FormStartPosition.Manual;
Run Code Online (Sandbox Code Playgroud)

也。