2016-01-26 1 views
0

в событии загрузки, я устанавливаю левое и верхнее положение. Что происходит, форма появляется в позиции по умолчанию, а затем переходит к тому месту, которое я установил вручную. Поэтому он мигает в одной позиции, а затем сразу переходит к настройкам ручного управления. (Надеюсь, что это имеет смысл .. дайте мне знать, если мне нужно предоставить больше информации)Вручную и левое положение запуска не работает

 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(

Спасибо за любую помощь ... плюс я знаю, последний символ удаляется.

+0

В чем ваш 'StartPosition' установлен? –

+0

Он также мерцает, когда вы восстанавливаете материал для загрузки реестра и устанавливаете Top, Left to any value? –

+0

Я предполагаю, что ваша форма всегда будет мигать между местоположениями. Если вы хотите, чтобы он начинался в определенном месте, вам нужно изменить свойство StartPosition. В противном случае вы можете установить его видимость на FALSE и программно преобразовать его в TRUE, когда все FormLoad закончилось. – Abner

ответ

0

Вот пример кода, который иллюстрирует вид, что я обычно делаю:

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.

 Смежные вопросы

  • Нет связанных вопросов^_^