我有一个带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
将表单设置StartPosition为FormStartPosition.Manual.您可以在设计器中或从构造函数中执行此操作:
StartPosition = FormStartPosition.Manual;
Run Code Online (Sandbox Code Playgroud)
显然你没有指望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)
Location是正确的属性,但您必须设置
Form.StartPosition = FormStartPosition.Manual;
Run Code Online (Sandbox Code Playgroud)
也。
| 归档时间: |
|
| 查看次数: |
9654 次 |
| 最近记录: |