【问题标题】:Manually setting top and left position of startup is not working手动设置启动的顶部和左侧位置不起作用
【发布时间】:2016-01-26 12:33:52
【问题描述】:

在加载事件中,我设置了左侧和顶部位置。发生的事情是表单显示在默认位置,然后转到我手动设置的位置。所以它在一个位置闪烁,然后立即进入手动设置。 (希望这是有道理的。如果我需要提供更多信息,请告诉我)

        Dim rkCurrentUser As RegistryKey = Registry.CurrentUser

    If rkCurrentUser IsNot Nothing Then
        Dim rkTest As RegistryKey = rkCurrentUser.OpenSubKey("My Secret Life")

        If rkTest IsNot Nothing Then

            regKey = Registry.CurrentUser.CreateSubKey("My Secret Life")

            Dim myLeft As Integer = 0
            myLeft = regKey.GetValue("frmMainLeft", myLeft)

            Dim myTop As Integer = 0
            myTop = regKey.GetValue("frmMainTop", myTop)

            Dim myMinutes As Integer = 0
            myMinutes = regKey.GetValue("waitMinutes", myMinutes)

            Me.Top = myTop
            Me.Left = myLeft

            regKey.Close()
            rkTest.Close()
            rkCurrentUser.Close()

        End If


    Else
        MsgBox("Key doesn't exist")
        regKey = Registry.CurrentUser.CreateSubKey("My Secret Life")
        regKey.SetValue("waitMinutes", 0)
        regKey.SetValue("frmMainLeft", Me.Left)
        regKey.SetValue("frmMainTop", Me.Top)

        regKey.Close()

    End If

    rkCurrentUser.Close(

感谢您的帮助...另外我知道最后一个字符已被删除。

【问题讨论】:

  • 您的StartPosition 设置为什么?
  • 当您移除注册表加载内容并将 Top,Left 设置为任何值时,它是否也会闪烁?
  • 我猜您的表单总是会在不同位置之间闪烁。如果您希望它从某个位置开始,您需要编辑 StartPosition 属性。否则,您可以将其可见性设置为 FALSE,并在所有 FormLoad 结束时以编程方式将其设置为 TRUE。
  • 好的...我会检查这些并告诉你
  • 抱歉拖了这么久。我从别人那里继承了这个项目,所以代码对我来说是新的。 Form1 不是启动页面,并且会出现一个皮肤窗口。当我将 visible 属性更改为 false 时,它​​在视觉上会做一些很奇怪的事情并失去它的皮肤。

标签: vb.net registry


【解决方案1】:

这里有一些示例代码说明了我通常做的事情:

  Function Display() As DialogResult
    Me.Icon = frmMain.Icon 'so we only change icons in one place
    'other initialisation stuff goes here
    RestoreFormSettings(Me) 'get form position (and size if resizable) from registry (your code)
    Return Me.ShowDialog() 'show the form modally, then return dialog result
End Function

您应该会发现这消除了闪烁。我还包括了我为确保整个应用程序的图标一致性所做的工作,以及如何返回 DialogResult,这是调用代码了解您在表单中所做的事情的一种方式。澄清一下,调用它而不是直接调用 frm.ShowDialog。

【讨论】:

    猜你喜欢
    • 2011-02-19
    • 1970-01-01
    • 2011-01-21
    • 2023-03-28
    • 1970-01-01
    • 2014-07-27
    • 1970-01-01
    • 2012-05-02
    • 1970-01-01
    相关资源
    最近更新 更多