Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.09.2016, 15:51   #1
Vitokhv
 
Регистрация: 16.09.2016
Сообщений: 8
Сообщение Чтение значений реестра без ошибок?

Подскажите как можно сократить код таким образом, чтобы при удалении раздела, ключа или значения реестра, отображалась информация без ошибок?

Код:
private void button_Click(object sender, EventArgs e)
        {
            key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("MyReg", false);
            if (key == null)
            {
                MessageBox.Show("нет раздела");
                return;
            }
            object Result = key.GetValue("KEY");
            if (Result == null)
            {
                MessageBox.Show("нет ключа");
            }
            else
            {
                if (Result.ToString() == "YES")
                    MessageBox.Show("есть значение");
                else
                    MessageBox.Show("нет значения");
            }
        }
Vitokhv вне форума Ответить с цитированием
Старый 16.09.2016, 15:54   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Что за ошибки?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 16.09.2016, 16:02   #3
Vitokhv
 
Регистрация: 16.09.2016
Сообщений: 8
По умолчанию

Если не выставлять null приложение зависает, и Visual Studio отображает ошибку.
Без части кода ниже, появляется ошибка если раздела реестра MyReg не существует:

Код:
if (key == null)
            {
                MessageBox.Show("нет раздела");
                return;
            }

Последний раз редактировалось Vitokhv; 16.09.2016 в 16:04.
Vitokhv вне форума Ответить с цитированием
Старый 16.09.2016, 16:07   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну так видимо нет такого ключа, вот и null key. Что не так?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 16.09.2016, 16:13   #5
Vitokhv
 
Регистрация: 16.09.2016
Сообщений: 8
По умолчанию

Задача простая, но код слишком большой.
Нужно чтобы при нажатии кнопки выставились галки в checkBox-сах.
Если значение в реестре присутствует, то ставить галку, если отсутствует галку убирать.

Таких галок будет несколько десятков на одну кнопу.
Vitokhv вне форума Ответить с цитированием
Старый 16.09.2016, 16:24   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Сделайте функцию типа
Код:
bool CheckRegistryKey(string key)
и не придется копипастить большой код
Код:
chkDoSomething.Checked = CheckRegistryKey("DoSomething");
chkDoSomethingElse.Checked = CheckRegistryKey("DoSomethingElse");
...
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 16.09.2016, 16:51   #7
Vitokhv
 
Регистрация: 16.09.2016
Сообщений: 8
По умолчанию

Не могу найти приблизительных примеров, можете подсказать?
Использую Visual Studio 2015

Последний раз редактировалось Vitokhv; 16.09.2016 в 16:53.
Vitokhv вне форума Ответить с цитированием
Старый 16.09.2016, 16:56   #8
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Примеров чего? Изучайте основы программирования и C#.

Я предложил просто вынести код проверки ключа в отдельную функцию, принимающую имя ключа параметром, и возвращающую true или false в зависимости от успеха.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[C] Чтение подключей реестра hvz- Помощь студентам 4 18.01.2013 00:13
чтение Реестра Robin_ Общие вопросы Delphi 1 03.09.2012 11:04
Чтение параметра из реестра nister17 C# (си шарп) 1 10.08.2012 14:09
D7, Win7: Чтение реестра без прав админа. Air Общие вопросы Delphi 6 26.06.2012 11:07
Возможен ли отлов ошибок "чужих" программ без скана экрана на предмет окон-ошибок? Человек_Борща Общие вопросы Delphi 4 21.04.2011 00:18