|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
||||||
Отключение/включение MessageBox, разбросанных по кодовой базе23.07.2017, 08:04. Показов 3219. Ответов 33
Метки нет (Все метки)
Даже не знаю, как правильно тему назвать по этому поводу. Вообщем, попробую описать то, что я хочу.
Допустим есть программа, которая при различных манипуляций пользователя с ней, может выкидывать всякие разные оповещения
MessageBox очень много, и они раскиданы по всех кодовой базе.Суть в том, что нужно организовать CheckBox в меню настроек программы, который может включать/выключать такого рода оповещения, причем скорее всего нужно будет оповещения по типу различать, и таких CheckBox будет несколько, которые будут включать/отключать только свои оповещения. Я знаю, как решить такую задачу, но мой подход не очень мне нравится, да и вообще он ущербский - это просто перед каждым вызовом MessageBox проверять условие...глупоМне интересно Ваше мнение, как Вы бы сделали эту задачу. Мне бы хотелось услышать правильное решение проблемы, чтобы больше к таким видам задач не возвращаться.
0
|
||||||
| 23.07.2017, 08:04 | |
|
Ответы с готовыми решениями:
33
Отключение / включение функций Отключение / включение USB Отключение\Включение дисководов |
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
||
| 23.07.2017, 08:39 [ТС] | ||
|
qwertehok,
MessageBox, и они раскиданы по всей кодовой базе.Во-вторых, представим такую ситуацию, что в новой версии программы какой-то тип оповещаний стал не нужен, и его нужно удалить...опять придется по всей кодовой базе рыскать, чтобы найти те оповещения, которые относятся к тому типу. Нужно что-то такое, чтобы все было в одном месте, чтобы было удобно...
0
|
||
|
14136 / 9356 / 1350
Регистрация: 21.01.2016
Сообщений: 35,168
|
||
| 23.07.2017, 08:43 | ||
|
Добавлено через 1 минуту Или такие вещи можно перетащить в базовый класс, от которого наследовать все формы (но это уже спорная вещь).
1
|
||
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
|
| 23.07.2017, 08:53 [ТС] | |
|
0
|
|
|
14136 / 9356 / 1350
Регистрация: 21.01.2016
Сообщений: 35,168
|
|
| 23.07.2017, 08:58 | |
|
Bretbas, в нем должен быть спрятан MessageBox и логика проверки разрешения показа MB. Везде нужно будет ипользовать данный хелпер, а не MB напрямую.
2
|
|
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
||||||
| 23.07.2017, 09:12 [ТС] | ||||||
|
Usaga, При инициализации этого хелпера, можно передать в него все checkBox'ы, чтобы он следил за ними, и в зависимости выключен/включен тот или иной checkBox, оповещаем или нет?
0
|
||||||
|
14136 / 9356 / 1350
Регистрация: 21.01.2016
Сообщений: 35,168
|
|
| 23.07.2017, 09:14 | |
|
Bretbas, передавать нужно значение настроек, а не сами чекбоксы. И класс можно сделать полностью статичным.
1
|
|
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
|||
| 23.07.2017, 09:21 [ТС] | |||
|
Usaga,
Вы это имели ввиду? ![]() Ну, хорошо, а если в дальнейшем будут добавляться новые типы оповещений? Наследование?
0
|
|||
| 23.07.2017, 09:24 | |
|
все оповещения должны быть в базе по типам
пользователь в настройках ставит - не показывать тип "Подтверждения" программа и не показывает новый тип - соответственно настройки у пользователя динамически создают еще один чекбокс
1
|
|
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
|||
| 23.07.2017, 09:32 [ТС] | |||
|
qwertehok,
0
|
|||
|
14136 / 9356 / 1350
Регистрация: 21.01.2016
Сообщений: 35,168
|
|
| 23.07.2017, 09:41 | |
Сообщение было отмечено Bretbas как решение
Решение
Bretbas, настройки представлены отдельным классом. Форма настроек меняет содержимое этого класса. В момент изменения, мы задаём значения и классу-хелперу. Новая настройка - новое свойство в классе настроек, наследование не причём.
1
|
|
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
|
| 23.07.2017, 09:45 [ТС] | |
|
0
|
|
|
14136 / 9356 / 1350
Регистрация: 21.01.2016
Сообщений: 35,168
|
|
| 23.07.2017, 09:49 | |
|
Bretbas, вам нужно будет просто добавить новую настройку в класс настроек. Точно так же у вас оповещения в одном классе находятся, можно будет заменить MessageBox на свистелку-перделку или добавть 100500 типов извещений - всё в одном месте. Просто и удобно.
0
|
|
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
||
| 23.07.2017, 09:56 [ТС] | ||
|
Usaga,
0
|
||
|
14136 / 9356 / 1350
Регистрация: 21.01.2016
Сообщений: 35,168
|
|
| 23.07.2017, 10:21 | |
|
Bretbas, конечно же я имел в виду сам механизм вывода извещений, а не их текст.
1
|
|
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
||||||
| 23.07.2017, 10:42 [ТС] | ||||||
|
Спасибо, буду делать.
Usaga, Вы бы также решали поставленную задачу, или есть еще способы? Добавлено через 13 минут Usaga, Извините, за столь глупые вопросы, с C# пока что на Вы. Допустим я объявил класс Settings со всеми свойствами, которые присутствуют в настройках. Допустим в настройках есть текстовые поля, куда пользователь вводит путь до определенных файлов, нужных программе. Мне проверку на существования файла, синтаксиса правильности пути и тд определять лучше в свойствах в setter'е ?
0
|
||||||
|
14136 / 9356 / 1350
Регистрация: 21.01.2016
Сообщений: 35,168
|
|||
| 23.07.2017, 17:04 | |||
|
0
|
|||
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
||||||
| 23.07.2017, 19:44 [ТС] | ||||||
|
Короче переписал весь код. Оказывается, мне вообще не нужно разделять оповещения какие-то по типу и т.п. Все это бред
![]() Вы мне скажите, вот так писать можно, правильный ли это тон в программировании на C#?
0
|
||||||
|
14136 / 9356 / 1350
Регистрация: 21.01.2016
Сообщений: 35,168
|
|
| 24.07.2017, 05:56 | |
|
Bretbas, так не делается.
* у тебя голимая копипаста, неужели нельзя было проверку в отдельный метод вынести? * почему свойство статическое? * почему свойство не свойство, а метод чтения\записи? * может быть проверку путей можно было сделать через цикл? * почему часть строковых литералов забита в виде ресурсов, а остальная - прямо в коде? * почему в геттере ты проверяешь значение в ключе реестра, а возвращаешь значение статической переменной? * зачем тебе две проверки, ты думаешь, что кто-то полезет в реестр руками что-то менять? Добавлено через 4 минуты Корректным вариантом будет разделение этого бардака на две части - сам класс с настройками (без логики, просто контейнер) и класс поставщика настроек, который будет читать\сохранять настройки. Последний может выступать и валидатором, но я бы вынес это в отдельный, третий класс. Судя по использованию (не очень хорошему) статических полей, с архитектурой у тебя всё плохо. Потому можно (хуже точно не будет) сделать класс настроек синглтоном (что бы был везде доступен), заполнять его на старте программы, сохранять и обновлять из формы редактирования настроек.
1
|
|
| 24.07.2017, 05:56 | |
|
Помогаю со студенческими работами здесь
20
Включение/отключение сопроцессора Включение / отключение прокси Отключение и включение меню
Отключение и включение картинок Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
|
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|