我想将表格放在屏幕的左上角。
我已尝试this.Location = new Point(0,0)
但窗口位于(7,0) - 窗口顶部位于屏幕顶部,但左侧距屏幕边缘7个像素。
我创建了新的WinForms应用程序进行测试,只添加了这段代码:
private void Form1_Load(object sender, EventArgs e)
{
Point p = new Point(0, 0);
WindowState = FormWindowState.Maximized;
Debug.WriteLine("\nMaximized");
Debug.WriteLine("Location: " + Location);
Debug.WriteLine("Size: " + Size);
Debug.WriteLine("PointToScreen(0,0): " + PointToScreen(p));
WindowState = FormWindowState.Normal;
Location = p;
Debug.WriteLine("\nNormal");
Debug.WriteLine("Location: " + Location);
Debug.WriteLine("Size: " + Size);
Debug.WriteLine("PointToScreen(0,0): " + PointToScreen(p));
Debug.Write("\nScreen.PrimaryScreen.WorkingArea: ");
Debug.WriteLine(Screen.PrimaryScreen.WorkingArea);
}
输出结果为:
Maximized
Location: {X=-8,Y=-8}
Size: {Width=1936, Height=1056}
PointToScreen(0,0): {X=0,Y=23}
Normal
Location: {X=0,Y=0}
Size: {Width=300, Height=300}
PointToScreen(0,0): {X=8,Y=31}
Screen.PrimaryScreen.WorkingArea: {X=0,Y=0,Width=1920,Height=1040}
为什么Location = new Point(0,0)
没有在(0,0)上定位表格?
这是由于我的系统上有什么问题吗?我有Win10和VS2015。任务栏位于底部,桌面左侧没有任何内容。
为了将它定位在(0,0)上,我实际上必须将它放在(-7,0)上。此外,报告的最大化形式的宽度比屏幕宽度大16个像素。据我所知,由于窗口边缘,标题栏等客户区域大小和表单大小之间存在差异,但这不是它。当窗体最大化时,没有左右边缘(客户区宽度=桌面宽度),但窗体宽度为+ 16px。表格的4个边各有+ 8px,但Y位置正常。为什么Y位置OK而X不是?
答案 0 :(得分:2)
感谢Uwe Keim和他自己的answer question,我创建了public void getGrade(double average){
double grade;
if...
函数来计算偏移并正确设置表单的位置,而不管Windows版本(即边框大小):
MoveForm
void MoveForm(Point p) // Move form to point 'p'
{
this.WindowState = FormWindowState.Normal;
this.Location = new Point(0, 0);
Rectangle rec = WindowHelper.GetWindowRectangle(this.Handle);
p.Offset(-rec.Location.X, -rec.Location.Y);
this.Location = p;
}
函数使用来自Uwe Keim的post的MoveForm
类:
WindowHelper
答案 1 :(得分:0)