窗体隐藏在屏幕窗体后面位置X和Y在ShowDialog()之后为负

时间:2013-11-29 10:21:17

标签: vb.net windows winforms .net-2.0 showdialog

我正在使用双监视器屏幕。我有一种情况,表单在主窗体后面。我保留了一个跟踪表单移动和位置更改的日志文件。我继续用表单位置写日志文件。< / p>

我发现在表单显示后表单位置为负。 所以我计算了屏幕的中心,并在表格展示之前编写了以下代码。

iLeft = (VB6.PixelsToTwipsX(System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width) / 2) - (VB6.PixelsToTwipsX(frmForm.Width) / 2)
iTop = (VB6.PixelsToTwipsY(System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height) / 2) - (VB6.PixelsToTwipsY(frmForm.Height) / 2)

frmDataForm.SetBounds(iLeft, iTop, 0, 0, Windows.Forms.BoundsSpecified.X Or Windows.Forms.BoundsSpecified.Y)

我尝试了以下修复程序,它适用于某些情况。

  Private Sub frmDataForm_Move()
  If Me.Location.X < 0 And zbFirstLoad Then
        CenterForm(0, Me)
        zbFirstLoad = False
  ElseIf Me.Location.X > 0 AndAlso Me.Visible Then
        zbFirstLoad = False
  End If

在表单加载时,我每次都设置bool变量为true。

 zbFirstLoad = True

然而,当消息框打开时,消息框会出现在主屏幕后面。 关于上述情况,我有3个问题

  1. 为什么即使表单Startposition属性设置为Centerscreen或Parentscreen,表单也始终位于负位置。
  2. 如何在中心显示消息框
  3. 还有其他方法可以解决这个问题。这个解决方案并不适用于所有形式。
  4. 注意:此问题出现在双显示器上。此问题仅出现在一台双显示器上,而不是其他任何地方。

    请回复..!

0 个答案:

没有答案