Я пытаюсь сохранить значение Color из ColorDialog в реестр. Я использую код ниже в своей утилите. Тем не менее, я замечаю, что при повторном запуске утилиты цвет, назначенный на Button1
(значение, считанное из реестра на), отличается от того, что я сохранил в реестре на первом месте.Как сохранить правильные значения диалогового окна цвета в реестре Windows
Основное приложение, для которого я разработал эту утилиту, имеет встроенную аналогичную функцию для сохранения/вызова настроек цвета из реестра. Я проверил, что код в моей утилите, который возвращает цвет из реестра при загрузке формы, хорош, а цвет соответствует тому, что я установил в главном приложении.
Не могли бы вы проверить код ниже и сообщить мне, что не так?
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim CLR = ColorDialog1.Color.GetHashCode.ToString
If Me.ColorDialog1.ShowDialog = DialogResult.OK Then
Dim regKey As RegistryKey
regKey = Registry.CurrentUser.OpenSubKey("Software\MyApp\Settings\Tags", True)
regKey.SetValue("DefaultColor", CLR, RegistryValueKind.DWord)
regKey.Close()
Button1.BackColor = Me.ColorDialog1.Color
End If
End Sub
кодекс используется для вызова цвета из реестра:
If My.Computer.Registry.GetValue("HKEY_CURRENT_USER\Software\MyApp\Settings\Tags", "DefaultColor", Nothing) Is Nothing Then
MsgBox("Value does not exist.")
'creates the DWORD value if not found
My.Computer.Registry.SetValue("HKEY_CURRENT_USER\Software\MyApp\Settings\Tags", "DefaultColor", 0, RegistryValueKind.DWord)
Else
Dim HEX = My.Computer.Registry.GetValue("HKEY_CURRENT_USER\Software\MyApp\Settings\Tags", "DefaultColor", Nothing)
Dim myColor As Color = System.Drawing.ColorTranslator.FromWin32(HEX.ToString)
TagLeaderCLRButton.BackColor = myColor
End If
Очевидная ошибка в том, что значение «CLR» получено * до *, вы показываете диалог. Внесение неправильного значения в реестр, старый. Переместите 'Dim CLR' * внутрь * оператор If. И используйте Color.ToArgb() –
Спасибо за предложение .. Я изменил код ... – DK2014