Аватар для Андрей_74
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 222

Сохранить состояние CheckBox, используя текстовый файл

07.05.2015, 13:24. Показов 5438. Ответов 39
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет всем, есть menuStrip, в нем есть команды с выбором Checked, подскажите как реализовать такой момент что бы допустим я поставил на какой небуть команде "checked = true" и в "блокнот" записалась "1" как "true", а остальные невыбранные команды "0" как "false". и при загрузки формы он считывал эти данные с "блокнота" и делал checked команд такими какими я оставлял.
Просто эти команды скрывают определенные компоненты, нужно что бы после работы формы если какой то компонент скрыт через команды cheked то он в следующий раз при загрузке формы не отображался видимым, соответственно cheked то команды будет на "false".
Хотел просто сделать через "Параметры в проекте", не получилось.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.05.2015, 13:24
Ответы с готовыми решениями:

Как сохранить состояние checkBox-a?
Есть две формы Form1 и Form2 на Form2 есть два checbox, когда я захожу на form2 активировать этот checBox не чего не происходит на form1 а...

Как сохранить состояние (стоит галочка или нет) в CheckBox?
Здравствуйте. Необходимо, чтобы при очередном запуске проги сохранялось состояние CheckBox. т.е. если я поставил галочку, другой раз...

Сохранить состояние CheckBox, используя текстовый файл
сохранить состояние checkbox'ов в текстовый файл при нажатии на кнопку "Сохранить", и при старте программы загружать последнее...

39
 Аватар для diadiavova
7253 / 2601 / 743
Регистрация: 11.04.2015
Сообщений: 4,137
Записей в блоге: 43
07.05.2015, 13:38
Цитата Сообщение от Андрей_74 Посмотреть сообщение
Хотел просто сделать через "Параметры в проекте", не получилось.
А что именно не получилось?
Выделяешь нужный тебе пункт меню. Заходишь в свойства. Находишь там пункт ApplicationSettbyus (в разделе Данные). Раскрываешь его, там будет пункт (PropertyBinding). Жамкаешь кнопочку с тремя точками, которая появится, когда пункт будет выделен. Появляется окно с Параметры приложения. Находишь свойство Checked. В вываливающемся списке выбираешь параметр, к которому надо привязать значение свойства. Если параметр не создавал, то там же можно выбрать Создать. Появится окошко для создания параметра, нам надо создать имя, выбрать значение по умолчанию и область действия (для отдельного пользователя или для всего приложения). Создал, привязал - радуйся.
0
 Аватар для Romalei
109 / 50 / 55
Регистрация: 17.09.2013
Сообщений: 298
07.05.2015, 13:41
Не проверял, но думаю, мысль ты уловил
C#
1
2
3
4
5
6
7
8
9
10
11
//по изменению свойства Checked есть событие CheckedChanged – создай обработчик и в нем впиши
List<string> bList = new List<string>();
foreach (ToolStripMenuItem item in menuStrip1.Items) //проверяем каждый элемент меню
    if (item.Checked)
       bList.Add(item.Name); //если он "чекнут", то добавляем его имя в файл
System.IO.File.WriteAllLines("Имя файла", bList, Encoding.Default);
//а по загрузке формы (FormLoad) впиши следующее:
string[] lines = System.IO.File.ReadAllLines("Имя файла", Encoding.Default); //считываем все строки из файла
foreach (ToolStripMenuItem item in menuStrip1.Items) //проверяем каждый элемент меню
    if (lines.Contains(item.Name)) //если имя элемента содержится в считанном массиве строк
       item.Checked = true;  //то устанавливаем его свойство Checked в True
1
 Аватар для Андрей_74
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 222
07.05.2015, 13:46  [ТС]
diadiavova, не у меня получилось сохранить позиции checked, но еще же нужно компоненты скрыть при помощи этих галочек
0
 Аватар для Romalei
109 / 50 / 55
Регистрация: 17.09.2013
Сообщений: 298
07.05.2015, 13:54
Создайте обработчик события CheckedChanged и в нем опишите все необходимые действия
Пример:
C#
1
2
3
4
private void toolStripMenuItem1_CheckedChanged(object sender, EventArgs e)
        {
            pictureBox1.Visible = toolStripMenuItem.Checked;
        }
0
 Аватар для Андрей_74
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 222
07.05.2015, 14:05  [ТС]
Romalei, слишком громоздко будет, у меня много ToolStripMenuItem

Добавлено через 4 минуты
У меня получилось сохранить позицию checked через параметры, но условие не работает,как будет оно работать этого я не понял, пробовал даже через инициализацию с параметрами, не помогло
условие это просто скрыть допустим любой компонент

Добавлено через 5 минут
Romalei, а если к примеру через инициализацию попробовать что небуть придумать?, типо массива, а то так громоздко выйдет
0
 Аватар для diadiavova
7253 / 2601 / 743
Регистрация: 11.04.2015
Сообщений: 4,137
Записей в блоге: 43
07.05.2015, 14:15
Андрей_74, как ты скрываешь компоненты? При помощи свойства Visible? Ну так его ведь тоже можно привязать к свойству чекд соответсвующего менюитема.
C#
1
2
            var binding = new Binding("Visible", this.CheckingMenuItem, "Checked");
            this.ContainerForHide.DataBindings.Add(binding);
Вместо this.CheckingMenuItem ссылка на твой менюитем, а вместо this.ContainerForHide - ссылка на контейнер, который надо скрывать, когда флажок с итема снимается. Все это выполняешь при загрузке формы один раз и не нужно никаких обработчиков событий или как ты там скрываешь элементы.
0
 Аватар для Андрей_74
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 222
07.05.2015, 14:30  [ТС]
diadiavova, не,с "парамертами по проекту" я просто попробовал через инициализацию сделать условие выбора, типо если true то показан а если false то скрыт

Добавлено через 6 минут
Цитата Сообщение от diadiavova Посмотреть сообщение
C#
1
2
var binding = new Binding("Visible", this.CheckingMenuItem, "Checked");
 this.ContainerForHide.DataBindings.Add(binding);
это в загрузку формы?
или это обработчик клика StripMenuItem?
0
 Аватар для diadiavova
7253 / 2601 / 743
Регистрация: 11.04.2015
Сообщений: 4,137
Записей в блоге: 43
07.05.2015, 14:33
Цитата Сообщение от Андрей_74 Посмотреть сообщение
это в загрузке формы?
Хотябы и так. Главное, что работать это будет после того, как код будет выполнен. Надо, чтобы работало сразу - пиши в загрузке формы.
И кстати объект биндинга не обязательно создавать отдельно. Посмотри перегрузки метода Add. Но если его создашь, то можно использовать для нескольких связок (вроде бы, не помню уже точно)
0
 Аватар для Андрей_74
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 222
07.05.2015, 14:44  [ТС]
diadiavova, получается каждый StripMenuItem писать в обработчик загрузки формы?
0
 Аватар для diadiavova
7253 / 2601 / 743
Регистрация: 11.04.2015
Сообщений: 4,137
Записей в блоге: 43
07.05.2015, 14:47
Андрей_74, ну обработчик не стоит так загромождать, лучше выдели инициализацию в отдельный метод и вызови его из обработчика. Ну, а так да, как ты еще укажешь, что к чему привязывать? Если у тебя есть другой способ, как-то в цикле все обойти и правильно все посвязывать, то действуй.
0
 Аватар для Андрей_74
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 222
07.05.2015, 14:54  [ТС]
diadiavova, я сейчас попробовал через "загрузку формы"на прямую и у меня checked со 2 раза ставиться
C#
1
2
3
4
5
 private void MainForm_Load(object sender, EventArgs e)
        {
            var binding = new Binding("Visible", this.структураДокументаToolStripMenuItem, "Checked");
            this.treeView1.DataBindings.Add(binding);
        }
0
 Аватар для diadiavova
7253 / 2601 / 743
Регистрация: 11.04.2015
Сообщений: 4,137
Записей в блоге: 43
07.05.2015, 15:08
Не понял.
0
 Аватар для Андрей_74
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 222
07.05.2015, 15:13  [ТС]
diadiavova,по дефолту у меня true стоит на компонент treeview, При запуске формы, если выбрать команду с checked то "галочка" не уберется с первого раза.
0
 Аватар для diadiavova
7253 / 2601 / 743
Регистрация: 11.04.2015
Сообщений: 4,137
Записей в блоге: 43
07.05.2015, 15:36
Во-первых, чтобы по клику убирался флажок, надо свойству CheckOnClick присвоить true. Во-вторых, смотри в том месте, где ты значение этому свойству присвоил вручную. Клик нигде не обрабатывал?
0
 Аватар для Андрей_74
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 222
07.05.2015, 15:45  [ТС]
diadiavova, diadiavova, да все у меня прописано, все стоит. только твой код обрабатывается
0
 Аватар для diadiavova
7253 / 2601 / 743
Регистрация: 11.04.2015
Сообщений: 4,137
Записей в блоге: 43
07.05.2015, 16:07
Ну возможно надо установить при каком событии срабатывает. Там по умолчанию вроде при валидации, то есть фокус должен смениться. Надо установить на изменение свойства.
C#
1
control1.DataBindings.Add("Checked", control2, "Visible", False, DataSourceUpdateMode.OnPropertyChanged)
0
 Аватар для Андрей_74
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 222
07.05.2015, 17:15  [ТС]
думаю лучше я через блокнот сделаю...

Добавлено через 15 минут
геморой на геморое
0
 Аватар для diadiavova
7253 / 2601 / 743
Регистрация: 11.04.2015
Сообщений: 4,137
Записей в блоге: 43
07.05.2015, 18:08
Цитата Сообщение от Андрей_74 Посмотреть сообщение
думаю лучше я через блокнот сделаю...
Покажешь потом, что получилось? А то, что-то сомнения берут, что это будет лучше. Хотя я не в курсе, что значит "через блокнот". )))

В аттаче небольшой пример набросал. Возможно не совсем то, о чем ты говорил, но там 16 панелей, для каждой создается чекбокс (программно), все это связывается в процессе создания. Для хранения состояния видимости панелей используется один текстовый параметр, в нем панели распределены по порядку и если она видима ей соответсвует единица, в противном случае - ноль. Все просто.
Вложения
Тип файла: rar bindings.rar (57.9 Кб, 21 просмотров)
1
 Аватар для Андрей_74
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 222
07.05.2015, 18:39  [ТС]
diadiavova, можешь прокомментировать свой код?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.05.2015, 18:39
Помогаю со студенческими работами здесь

Как сохранить выбранное значение combobox и checkbox в текстовый файл?
как сохранить выбранное значение combobox и checkbox в текстовый файл?

Сохранить состояние checkBox в ini (Работа с QSettings)
Всем доброго времени суток. На данный момент сохраняю в ini состояние текущего окна, т.е. его размеры. Реализовано следующим...

Сохранить состояние checkBox между разными сеансами работы
Есть приложение, в нем нужно сохранить значение checkBox, то есть при следующем запуске приложения checkBox должен остаться таким же,...

Как сохранить состояние выделенных checkbox и list data в Listactivity?
Здравствуйте. Было задание сделать ListView c CheckBox, при нажатии на кнопку Add добавляется случайное число в ListActivity. Если выделить...

Как сохранить состояние галочки в CheckBox при обновлении программы?
здравствуйте уважаемые программисты! 1)Как сохранить состояние галочки при (обновлении программы или его перезапуске) в CheckBox -...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

Новые блоги и статьи
Kanban или Scrum - что выбрать?
EggHead 27.04.2025
Kanban и Scrum — уже много лет удерживают лидирующие позиции среди гибких подходов. Руководители проектов и команды разработчиков то и дело сталкиваются с дилеммой: какой из этих двух методов выбрать. . .
Кастомные Middleware на C# в ASP.NET Core
UnmanagedCoder 27.04.2025
Разработка веб-приложений сегодня мало напоминает монолитное программирование прошлых лет. На смену громоздким блокам кода пришла модульная архитектура, где каждый компонент выполняет строго. . .
Анализ и линтинг кода JavaScript: ESLint, Prettier и JSHint
run.dev 26.04.2025
JavaScript прошёл долгий путь от простого языка для анимации веб-страниц до основы современной веб-разработки. С ростом сложности приложений, увеличением кодовых баз и масштабированием команд. . .
Паттерны в Python: Singleton, Factory и Observer
py-thonny 26.04.2025
Паттерны проектирования — это проверенные временем решения типовых проблем разработки программного обеспечения. Их история берёт начало с книги "Приёмы объектно-ориентированного проектирования. . . .
Исключения в C#: Stack Overflow, Access Violation и Out of memory
stackOverflow 26.04.2025
Исключения в C# — это не только механизм оповещения о проблемах, а целое искусство управления потоком выполнения программы в экстремальных ситуациях. Обычное исключение, например,. . .
Логирование в C# ASP.NET Core с помощью Serilog, ElasticSearch, Kibana
stackOverflow 25.04.2025
Помните те времена, когда для анализа проблемы приходилось подключаться к серверу, искать нужный лог-файл среди десятков других и вручную фильтровать тысячи строк в поисках ошибки? К счастью, эти дни. . .
Структура "железный OnKeyUp" вместо антидребезга. Полностью асинхронный счётчик.
Hrethgir 25.04.2025
Программа для симуляции схемы - Logisim Evolution В общем какое-то время отвлёкся, так было надо, теперь когда запилю это на verilog и FPGA , досоставлю заявку в ФИПС на полезную модель - не готов. . .
Автоматизация Amazon Web Services (AWS) с Boto3 в Python
py-thonny 25.04.2025
Облачные вычисления стали неотъемлемой частью современной ИТ-инфраструктуры, а Amazon Web Services (AWS) занимает лидирующие позиции среди провайдеров облачных услуг. Управление многочисленными. . .
Apache Kafka vs RabbitMQ в микросервисной архитектуре
ArchitectMsa 25.04.2025
Современная разработка ПО всё чаще склоняется к микросервисной архитектуре — подходу, при котором приложение разбивается на множество небольших, автономных сервисов. В этой распределённой среде. . .
Параллельное программирование с OpenMP в C++
NullReferenced 24.04.2025
Параллельное программирование — подход к созданию программ, когда одна задача разбивается на несколько подзадач, которые могут выполняться одновременно. Оно стало необходимым навыком для. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru