我有一个名为Form1的表单。它设置为启动 - 位置=中心但在执行时它会在其他地方打开(在随机位置evrytime)。
我在Windows XP SP3下使用IDE Visual Studio - 2010工作。请提供此问题的解决方法。
我上传了一个显示上述问题的示例项目。
下载链接:
答案 0 :(得分:9)
你必须设置:
Form1.StartPosition = FormStartPosition.Manual
以下是一份工作样本:
Dim X As Integer = (Screen.PrimaryScreen.Bounds.Width - Me.Width) / 2
Dim Y As Integer = (Screen.PrimaryScreen.Bounds.Height - Me.Height) / 2
Me.StartPosition = FormStartPosition.Manual
Me.Location = New System.Drawing.Point(X, Y)
以下是基于Hans Passant评论的改进代码(更好):
Dim mainScreen As Screen = Screen.FromPoint(Me.Location)
Dim X As Integer = (mainScreen.WorkingArea.Width - Me.Width) / 2 + mainScreen.WorkingArea.Left
Dim Y As Integer = (mainScreen.WorkingArea.Height - Me.Height) / 2 + mainScreen.WorkingArea.Top
Me.StartPosition = FormStartPosition.Manual
Me.Location = New System.Drawing.Point(X, Y)
答案 1 :(得分:2)
在调整屏幕大小后尝试使用此功能
Me.Size = New System.Drawing.Size(800, 436)
Me.CenterToScreen()
答案 2 :(得分:1)
在你的问题中,由于没有像Form的StartPosition属性的“Center”这样的选项,所以你实际尝试的内容并不十分清楚。
但是,将StartPosition设置为CenterScreen或
Me.StartPosition = FormStartPosition.CenterScreen
如果你是以编程方式进行的,那么应该得到你所需要的。
参考:http://msdn.microsoft.com/en-us/library/system.windows.forms.formstartposition.aspx
答案 3 :(得分:1)
以下是解决方案:
Dim screen__1 As Screen = Screen.FromControl(frm)
Dim workingArea As Rectangle = screen__1.WorkingArea
frm.Location = New Point() With { _
.X = Math.Max(workingArea.X, workingArea.X + (workingArea.Width - frm.Width) / 2), _
.Y = Math.Max(workingArea.Y, workingArea.Y + (workingArea.Height - frm.Height) / 2) _
}
答案 4 :(得分:1)
第二个:
'frm = is the form object
Dim X As Integer = (Screen.PrimaryScreen.Bounds.Width - frm.Width) / 2
Dim Y As Integer = (Screen.PrimaryScreen.Bounds.Height - frm.Height) / 2
frm.StartPosition = FormStartPosition.Manual
frm.Location = New System.Drawing.Point(X, Y)
答案 5 :(得分:0)
对于VB.net 2010 把代码放到形成加载事件
Call CenterToScreen()
这是由VS
提供的方法构建的