Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.73/30: Рейтинг темы: голосов - 30, средняя оценка - 4.73
 Аватар для sergo_ukr
8 / 8 / 0
Регистрация: 22.07.2009
Сообщений: 58

Видимость состояния радиокнопки в другой форме

24.07.2009, 06:07. Показов 6713. Ответов 31
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В стартовой форме программы есть несколько радиокнопок (RadioButton). Есть несколько других последовательно открываемых форм. Необходимо, чтобы состояние радиокнопок (свойство Checked) в стартовой форме было видно в остальных формах, так как оно влияет на ход дальнейшего выполнения программы.
Как это сделать без лишнего геморроя?
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.07.2009, 06:07
Ответы с готовыми решениями:

Радиокнопки и видимость элементов формы
На странице имеются две радиокнопки, при выборе первой отмечаем что ученик был на уроке и на странице видна форма с оценками, при выборе...

Отображение кнопки на одной форме в зависимости от состояния Checkbox на другой
Добрый день! Подскажите, пожалуйста, как сделать так, чтобы при установке активности на определенных checkbox на первой форме, на второй...

Отлов состояния радиокнопки
Нагуглил такое: isDown isChecked С 1 вообще не понял ничего, 2 сделал, но не работает. Глобальный массив: HWND hButChec; ...

31
 Аватар для sergo_ukr
8 / 8 / 0
Регистрация: 22.07.2009
Сообщений: 58
31.07.2009, 05:36  [ТС]
Студворк — интернет-сервис помощи студентам
Сделал по 2 варианту, состояние кнопки передается из формы в форму. В общем смысл передачи я уже понял, такими же способами передаются и состояния и значения и любых других элементов из формы в форму, правильно?
Одно не совсем дошло - зачем в вашем примере дважды инициализируется f2 = new Form2(); - первый раз в блоке инициализации, а второй - в обработчике нажатия кнопки? Причем первый раз ещё даже ее до объявления.
Возникает другая проблема. Дело в том, что при инициализации формы 3 мне необходимо заполнить комбобоксы определенными значениями в зависимости от состояния радиокнопок Stand и Export (в вашем примере rb1 и rb2). Но при выполнении InitializeComponent(); переменные rb1 и rb2 еще не определены и, соответственно, та часть кода, которая расположена сразу за InitializeComponent(); тоже не знает, в какие значения будут у rb1/rb2 и все время показывает умолчальные значения. А списки не заполняются вообще никак и их свойство DropDownStyle не меняется.
Может я немного неграмотно выражаюсь, еще к терминологии и структуре C# не привык. Взгляните на предлагаемый проект (точнее его начальную "настроечную" часть). Если в форме 3 убрать комментарии в строках 105 и 113, то изменение состояния радиокнопок Stand и Export (в форме 1) в сообщениях отображается, а если в строках 17-18 - то нет, соответственно строки 21-95 не выполняются. Почему?
Вложения
Тип файла: zip Расчет постава.zip (208.5 Кб, 15 просмотров)
0
 Аватар для sergo_ukr
8 / 8 / 0
Регистрация: 22.07.2009
Сообщений: 58
31.07.2009, 05:47  [ТС]
Другая проблема снимается, решил сам. А вопрос про двойное объявление формы остается.
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3618 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
31.07.2009, 10:54
sergo_ukr, первый раз потому что:
C#
1
2
3
4
5
6
        private void radioButton1_CheckedChanged(object sender, EventArgs e)
        {
            f2.CheckedRB1 = radioButton1.Checked;
            //== второй вариант ==\\
            f2.rb1Checked = radioButton1.Checked;
        }
невозможно выполнить этот код, если обьект f2 не создан, в противном случае вылетит ексепшен, что не задана ссылка на обьект.
Второй раз для того, чтобы форму можно было открывать более одного раза. Т.е. при первом нажатии на кнопку форма открывается. После того как ее закрыли - уничтожается обьект f2 и уже с этим обьектом(а следовательно и формой) работать нельзя(можеш посмотреть что будет - вылетит исключение "попытка доступа к ликвидированному обьекту"). А так каждый раз при нажатии на кнопку я создаю заново этот обьект и могу без проблем открывать форму много раз
0
 Аватар для sergo_ukr
8 / 8 / 0
Регистрация: 22.07.2009
Сообщений: 58
31.07.2009, 16:06  [ТС]
Понял, спасибо за разъяснение!
Патологически не хватает времени на чтение умных книг, к тому же у разных авторов изложение разное, кто-то заостряет внимание на одном, кто-то на другом, поэтому иногда проще в форуме задать вопрос и получить на него ответ.
Еще раз спасибо, наверное данную тему можно закрыть.
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3618 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
31.07.2009, 16:14
Знаеш, я не знаю, насколько правильно я поступаю, но я книг не читаю. Обращаюсь к ним(ну или гугл с форумом) только тогда когда над чем-то застрял и не знаю как выйти из ситуации. Практика по мне - самое лучшее изучение
0
 Аватар для sergo_ukr
8 / 8 / 0
Регистрация: 22.07.2009
Сообщений: 58
03.08.2009, 16:53  [ТС]
В принципе да, но некоторый базовый минимум все равно знать надо, чтобы меньше глупых вопросов в форумах задавать. Кроме того, когда знаешь структуру языка в целом (хотя бы поверхностно), в деталях разобраться уже намного легче. По крайней мере мне. У меня такая метода восприятия - сначала охватить проблему в целом, а потом по мере необходимости углубляться до конкретных деталей. А когда начинаешь с изучения деталей, то постоянно обнаруживается нехватка знаний по каким-нибудь другим деталям. В общем примерно так.
Проблема ещё и в том, что раньше в силу специфики работы я немного программировал на VBA for Excel 2003 и чуть-чуть на VB 3.0, а они по сравнению с C# совсем другие: они не поддерживают технологию .NET, поэтому сама структура языка другая, основные понятия другие, да в общем-то практически все другое, поэтому навыки, приобретенные в VBA практически не годятся для C# и приходится все осваивать заново.

Добавлено через 3 минуты 3 секунды
И еще одна проблема с умными книгами. Такое впечатление, что процентов 90 книг авторы пишут сами для себя, поэтому научиться по ним чему-нибудь достаточно сложно. А по настоящему толковых книг несмотря на обилие литературы - раз-два и обчелся!!! :-(
0
1923 / 428 / 41
Регистрация: 12.07.2007
Сообщений: 2,062
04.08.2009, 03:05
Давайте не будем уходить от темы топика
0
 Аватар для sergo_ukr
8 / 8 / 0
Регистрация: 22.07.2009
Сообщений: 58
05.08.2009, 17:42  [ТС]
Собственно тема топика как таковая исчерпана, если будут возникать другие вопросы, то они уже вряд ли будут относиться к этой теме.
0
 Аватар для sergo_ukr
8 / 8 / 0
Регистрация: 22.07.2009
Сообщений: 58
18.09.2009, 12:21  [ТС]
Думал, что тема закрылась, но выяснилось, что не до конца. Дело вот в чем:
По нижеприведенной методике M128K145 у меня все получается, если я перехожу из Form1 в Form3 или в Form4 напрямую. Для этого я сделал так:
в форме 1:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            f3 = new Form3();
            f4 = new Form4();
            ...
        }
        Form3 f3;
        Form4 f4;
 
        private void Export_CheckedChanged(object sender, EventArgs e)
        {
            f3.rb2Checked = Export.Checked;
            f4.rb4Checked = Export.Checked;
            ............
        }
 
        private void Stand_CheckedChanged(object sender, EventArgs e)
        {
            f3.rb1Checked = Stand.Checked;
            f4.rb3Checked = Stand.Checked;
            ............
       }
 
        public void Ok_Click(object sender, EventArgs e)
        {
            .................
            f3 = new Form3();
            Stand_CheckedChanged(sender, e);
            Export_CheckedChanged(sender, e);         
            // передача в Form4 состояния радиокнопок Stand и Export
            f4 = new Form4();
            Stand_CheckedChanged(sender, e);
            Export_CheckedChanged(sender, e);         
            str1 = InputBox.Show("Создать спецификацию пиломатериалов? (введите да или нет)");
            if (str1 == "нет" || str1 == "ytn")
                f4.Show();
            else
                f3.Show();
        }
в форме 3:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
    public partial class Form3 : Form
    {
        public Form3()
        {
            InitializeComponent();
         }
        bool rb1 = false;
        bool rb2 = false;
 
        internal bool rb1Checked
        {
            set
            {
                rb1 = value;
                 if (rb1 == true)
                {
                    ............
                 }
                else
                {
                    ............
                }
            }
        }
        internal bool rb2Checked
        {
            set
            {
                rb2 = value;
                 if (rb2 == false)
                {
                    ....................
                }
                else
                {
                    .............
                }
            }
        }
 
        private void Sohran2_Click(object sender, EventArgs e)
        {
            ...................
            this.Hide();
            Form4 f4 = new Form4();
            f4.Show();
        }
В форме4 аналогично форме3, только вместо rb1 и rb2 соответственно rb3 и rb4.
Но вот если я перехожу из Form1 в Form3, а уже из нее перехожу в Form4, то Form4 состояния радиокнопок в Form1 не видит. Т.е. должна быть еще одна промежуточная передача свойств кнопок, находящихся в ф.1 из f3 в f4? А как? Я пробовал в ф.3 написать тот же код, что в ф.1, но компилятор ругается, что нет в текущем контексте таких элементов Stand_CheckedChanged(sender, e) и Export_CheckedChanged(sender, e). Оно и понятно, они же в ф.1. Я их убрал, оставил только в ф.3 Form4 f4 = new Form4(). Ругани нет, но и результата нет.
Что я опять неправильно делаю?
0
 Аватар для body90
467 / 344 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
23.09.2009, 13:13
Извиняюсь, если уже не в тему, но нельзя ли было просто в самом начале программы (перед созданием форм, сделать глобальными) объявить неслосься bool переменных и потом в форме присвоить значения боксов? Тогда их состояние будет доступно по всему коду.
Понимаю, некрасивый стиль программирования с глобальными переменными, но так на много легче.
1
 Аватар для sergo_ukr
8 / 8 / 0
Регистрация: 22.07.2009
Сообщений: 58
23.09.2009, 21:58  [ТС]
Попробую на днях, поскольку работа над проектом притормозилась из-за более срочных дел. О результатах сообщу.
0
 Аватар для body90
467 / 344 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
23.09.2009, 23:52
Дерзай
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.09.2009, 23:52

Видимость и не видимость кнопки на форме
Как, в Лазарус, сделать так, чтобы на форме кнопка сначала была не видна, а при наведении на то место, где должна быть кнопка она...

Видимость объекта в зависимости от состояния CheckBox
Как сделать чтобы при отмеченном флажке Visible ставился на True, а на снятом флажке на False

Видимость компонентов в зависимости от состояния CheckBox
Здравствуйте, ув. форумчане! У меня один нелепый вопрос с каким я не могу разобраться вот у меня есть такой код private void...

Событие изменения состояния чекбокса + видимость дополнительного блока
Помогите. Я не знаю как объяснить по-другому мне надо не целая форма после загрузке, а лишь половина. такие штуки обычно в кряках...

Создание в форме обработчика для радиокнопки
как написать к форме в базе данных обработчик событий,связанный с радио кнопкой?! помогите пожалуйста!


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

Или воспользуйтесь поиском по форуму:
32
Ответ Создать тему
Новые блоги и статьи
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru