在Form1的顶部我做了:
private IntPtr ID;
private int counter = 0;
在构造函数中我做了:
ID = this.Handle;
timer2.Enabled = true;
然后在timer2嘀嗒事件我做了:
private void timer2_Tick(object sender, EventArgs e)
{
if (counter <= Screen.PrimaryScreen.Bounds.Right)
MoveWindow(ID, counter++, 0, this.Width, this.Height, true);
else
counter = 0;
}
但是表格开始从左上角0,0移动到右边。 我希望表单将开始从屏幕中心向左移动,直到它触及左边界/绑定并停在那里。
我该怎么做?
我现在发现如何让它向左移动并停在左边界/边界上:
private void timer2_Tick(object sender, EventArgs e)
{
if (counter >= Screen.PrimaryScreen.Bounds.Left)
MoveWindow(ID, counter--, 0, this.Width, this.Height, true);
else
counter = 0;
}
但是我该如何让它开始从屏幕的中间/中心移动? 我在设计器中更改了属性:StartPosition到CenterScreen 但是表格开始从左上角移动0,0
答案 0 :(得分:1)
有一个更好的解决方案,只需使用protected
方法CenterToScreen()
,如下所示:
this.CenterToScreen();
答案 1 :(得分:0)
这就是答案。
x = Screen.PrimaryScreen.Bounds.Bottom - this.Width * 2;
y = Screen.PrimaryScreen.Bounds.Bottom - this.Height * 2;
counter = x;
然后在计时器刻度事件中:
private void timer2_Tick(object sender, EventArgs e)
{
if (counter >= Screen.PrimaryScreen.Bounds.Left)
MoveWindow(ID, counter--, y, this.Width, this.Height, true);
else
counter = 0;
}
在它之前,counter--被设置为0.而y也是0。 所以它是0,0这是位置。 现在,计数器和y开始位置是屏幕的中间位置。
感谢。
答案 2 :(得分:0)
您可以将主WinForm的StartPosition
属性设置为CenterScreen
:
Form1.StartPosition = FormStartPosition.CenterScreen;
然后,如果您希望它以某种方式显示在相对于此屏幕中心的不同位置,您可以使用Top
和Left
属性来添加或减去所需的像素数。
如果您需要了解屏幕边界:
System.Windows.Forms.Screen.PrimaryScreen.Bounds
或考虑到任务栏:
System.Windows.Forms.Screen.PrimaryScreen.WorkingArea
......或某些变体