c#.net Windows 窗体位置



嗨,我无法正常工作,表单每次都会在屏幕上的不同位置启动,我做错了什么? 我正在设置表单加载的位置点。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace Report_Maintenance
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Form1 frm1 = new Form1();
frm1.StartPosition = FormStartPosition.Manual;
frm1.Left = 500;
frm1.Top = 500;           
}
}
}

Form1_Load方法运行时,窗体已创建。当您运行Form1 frm1 = new Form1();这将创建另一个永远不会显示的表单(因为您从不调用frm1.Show()frm1.ShowDialog()(。请改用当前表单。您可以通过关键字this引用它。

另外,尽快执行此操作,即在构造函数中,但在表单初始化之后,即在InitializeComponent();之后。InitializeComponent设置所有窗体属性并创建在窗体设计器中定义的所有控件。

public Form1()
{
InitializeComponent();
this.StartPosition = FormStartPosition.Manual;
this.Left = 500;
this.Top = 500; 
}

由于这些成员在类中是自动已知的,因此还可以省略this关键字。

public Form1()
{
InitializeComponent();
StartPosition = FormStartPosition.Manual;
Left = 500;
Top = 500; 
}

请注意,仅供说明之用:您可以打开同一表单的多个实例。这将在不同的屏幕位置打开 3 个实例:

for (int i = 0; i < 3; i++) {
Form1 frm1 = new Form1();
frm1.StartPosition = FormStartPosition.Manual;
frm1.Left = 200 + i * 100;
frm1.Top = 400 + i * 50;
frm1.Text = $"This is instance #{i} of Form1"; // Set the form caption.
frm1.Show();
}

另请参阅:此(C# 参考(

最新更新