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

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

24.07.2009, 06:07. Показов 6461. Ответов 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
Комбайнёр
 Аватар для MAcK
1606 / 704 / 77
Регистрация: 27.05.2008
Сообщений: 2,535
24.07.2009, 08:20
Создать метод:

C#
1
2
3
4
5
6
7
8
Public bool RadioButton
{
  get
  {
      return radioButton1.Checked;
  }
 
}
и передать ссылку формы в дочерние.

Передать при инициализации(в конструкторе) формы данные об чекбоксах

C#
1
form2 frm2 = new form2(radiobutton1.checked, radiobutton2.checked);
0
 Аватар для sergo_ukr
8 / 8 / 0
Регистрация: 22.07.2009
Сообщений: 58
24.07.2009, 12:08  [ТС]
Спасибо, попробую.
0
 Аватар для sergo_ukr
8 / 8 / 0
Регистрация: 22.07.2009
Сообщений: 58
28.07.2009, 10:34  [ТС]
Сделал, появляется сообщение:
"Form2 не содержит конструктор, который принимает аргументы "2"".
Что это значит?

Добавлено через 2 минуты 53 секунды
Сделал вот так:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 public bool StandAll
 {
 get
   {
     return Stand.Checked;
   }         
 }
 
 public bool ExportAll
 {
 get
    {
       return Export.Checked;
    }         
 }
Добавлено через 1 минуту 52 секунды
C#
1
2
3
4
5
6
public void Ok_Click(object sender, EventArgs e)
{
   ...
   Form f3 = new Form3(Stand.Checked, Export.Checked);
   f3.Show(this);
}
Добавлено через 1 минуту 53 секунды
И форма 3 при нажатии ОК не открывается, а при нажатии кнопки "Отмена" в головной форме приложение не закрывается:

C#
1
2
3
4
private void Otmena_Click(object sender, EventArgs e)
{
   this.Close();
}
Добавлено через 3 часа 13 минут 40 секунд
С открытием/закрытием форм уже разобрался, остальные вопросы остаются открытыми.
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
28.07.2009, 11:11
sergo_ukr, попробуй так.
Вложения
Тип файла: rar HLP_RadioButton.rar (35.1 Кб, 53 просмотров)
0
Комбайнёр
 Аватар для MAcK
1606 / 704 / 77
Регистрация: 27.05.2008
Сообщений: 2,535
28.07.2009, 11:31
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
public bool StandAll
{
set
{
  Stand.Checked = value;
}
get
{
return Stand.Checked;
} 
}
 
public bool ExportAll
{
set
{
  Export.Checked = value;
}
get
{
return Export.Checked;
} 
}
.....
Form f3 = new Form3();
f3.StandAll = true;
f3.ExportAll = true;
 
f3.Show();
 
}
0
 Аватар для sergo_ukr
8 / 8 / 0
Регистрация: 22.07.2009
Сообщений: 58
28.07.2009, 12:49  [ТС]
Сделал, выдало следующую ошибку:

"System.Windows.Forms.Form" не содержит определения для "StandAll" и не был найден метод расширения "StandAll", принимающий тип "System.Windows.Forms.Form" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку) "

По ExportAll аналогичное сообщение.
0
Комбайнёр
 Аватар для MAcK
1606 / 704 / 77
Регистрация: 27.05.2008
Сообщений: 2,535
28.07.2009, 13:07
public bool ExportAll -- вы его написали в классе Form3?
0
 Аватар для sergo_ukr
8 / 8 / 0
Регистрация: 22.07.2009
Сообщений: 58
29.07.2009, 04:58  [ТС]
Да, Form2 я объединил с Form1, поэтому ее уже просто нет, теперь состояние RadioButtons из Form1 необходимо видеть в Form3 (в общем-то оно и раньше так было надо, просто раньше их надо было видеть из Form2-Form4, а теперь только из Form3-Form4, но сути дела это не меняет).

Добавлено через 43 минуты 44 секунды
Попробовал вариант, предложенный M128K145 в прилагаемом файле. Получаю сообщение в форме 3 "Элемент "Stand" не существует в текущем контексте". То же про Export и про f3. Но место ошибки подчеркивается уже не красным, а синим цветом.
0
1923 / 428 / 41
Регистрация: 12.07.2007
Сообщений: 2,062
29.07.2009, 05:03
Цитата Сообщение от IT-Skyline Посмотреть сообщение
Form f3 = new Form3();
заменить на
Code
1
Form3 f3 = new Form3();
0
 Аватар для sergo_ukr
8 / 8 / 0
Регистрация: 22.07.2009
Сообщений: 58
29.07.2009, 05:13  [ТС]
И еще вопрос к M128K145 - в вашем варианте форма 2 должна открыться сразу же вслед за формой 1, а зачем? Или я что-то не до конца понимаю?
Имеется в виду часть кода:

C#
1
2
3
4
5
6
7
public Form1()
{
    InitializeComponent();
    f2 = new Form2();
    f2.Show();
}
Form2 f2;
Добавлено через 9 минут 6 секунд
Green: я раньше так и писал - результат тот же, сейчас исправил - ничего не изменилось. В разных источниках этот блок пишут по разному, и так

Form3 f3 = new Form3();

и так

Form f3 = new Form3();

результат по видимому один.
И еще вопрос к M128K145 - почему объявление и показ формы 2 (3) стоит в блоке инициализации, а не в обработчике нажатия кнопки? Ведь форма 3 должна открываться только после нажатия кнопки ОК, а не сразу после запуска приложения.
0
1923 / 428 / 41
Регистрация: 12.07.2007
Сообщений: 2,062
29.07.2009, 06:53
Цитата Сообщение от sergo_ukr Посмотреть сообщение
Form3 f3 = new Form3();
и так
Form f3 = new Form3();
результат по видимому один.
Один?!

Form3 наследник от Form. У него есть все от Form и еще немного своего. В частности StandAll и ExportAll. А вот у Form этого нет, т.к. микрософт в свой класс таких свойств не вкладывала. Поэтому, так
Code
1
2
3
Form f3 = new Form3();
f3.StandAll = true;
f3.ExportAll = true;
Компилятор скажет ошибку, а так
Code
1
2
3
Form3 f3 = new Form3();
f3.StandAll = true;
f3.ExportAll = true;
нет (При условии, что в Form3 есть этот функционал!)

Цитата Сообщение от sergo_ukr Посмотреть сообщение
И еще вопрос к M128K145 - почему объявление и показ формы 2 (3) стоит в блоке инициализации, а не в обработчике нажатия кнопки? Ведь форма 3 должна открываться только после нажатия кнопки ОК, а не сразу после запуска приложения.
Это ведь пример, а не готовый код. Если идея понятна, то нужное место найдется
0
 Аватар для sergo_ukr
8 / 8 / 0
Регистрация: 22.07.2009
Сообщений: 58
29.07.2009, 07:32  [ТС]
Код

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Form3 f3 = new Form3();
f3.StandAll = true;
f3.ExportAll = true;
 
работает, а вот
 
        public bool StandAll
        {
           get
            {
                return Stand.Checked;
            }
            set
            {
                Stand.Checked = value;
            }
        }
не хочет. Отсюда вопрос - в какое конкретно место и какой формы этот блок вставлять, я перепробовал разные варианты, но все равно выходит как минимум ошибка "Элемент "Stand" не существует в текущем контексте", а бывает и целый букет ошибок.
0
Комбайнёр
 Аватар для MAcK
1606 / 704 / 77
Регистрация: 27.05.2008
Сообщений: 2,535
29.07.2009, 08:30
Этот код должен быть в классе Form3, так как именно там Вам нужно изменить значение радиокнопок.
Stand <-- это имя радиокнопки, если у Вас другое, то поменяйте!
0
 Аватар для sergo_ukr
8 / 8 / 0
Регистрация: 22.07.2009
Сообщений: 58
29.07.2009, 10:52  [ТС]
Попробовал следующие варианты.
Вариант1: в форме 1 в обработчике нажатия кнопки ОК

C#
1
2
3
4
Form3 f3 = new Form3();
f3.StandAll = true;
f3.ExportAll = true;
f3.Show(this);
в форме 3 в public partial class Form3 : Form после блока public Form3() {}

C#
1
2
3
4
5
6
7
8
9
10
11
public bool StandAll
{
    get { return Stand.Checked; }
    set { Stand.Checked = value; }
}
 
public bool ExportAll
{
    get { return Export.Checked; }
    set { Export.Checked = value; }
}
отладчик пишет "Элемент "Stand" (ну и соответственно "Export") не существует в текущем контексте".

Вариант 2: в форме 1 в обработчике нажатия кнопки ОК то же самое, в форме 3

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
private bool standAll;
public bool StandAll
{
    get { return standAll; }
    set { standAll = value; }
}
 
private bool exportAll;
public bool ExportAll
{
    get { return exportAll; }
    set { exportAll = value; }
}
отладчик никаких ошибок не выдает, но в форме 3 никаких изменений не происходит, т.е. она не видит значения радиокнопок в форме 1.
Т.е. если мне надо в зависимости от состояния переключателя Stand (true/false) в форме 1 выполнить некий блок вида

C#
1
2
3
4
if ([B]StandAll[/B] == true)
{
...
}
то как я должен обращаться к значениям кнопок Stand/Export - как Stand или StandAll или standAll???
И кстати, если f3.StandAll = true; то всегда будет значение true? Может правильней f3.StandAll = Stand.Checked; ? Я так пробовал, по второму варианту ошибок не выдает. Или это тоже для примера написано?
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
29.07.2009, 17:39
sergo_ukr, я просто для примера сделал открытие второй формы при запуске программы. Естественно это можно сделать и при нажатии кнопки. Просто сама суть была в том, чтобы показать два способа связи - напрямую между двумя радиобаттонами из разных форм и через булеву переменную. А когда показывать вторую форму зависит от автора. Главное в моем примере - это в самом начале создать обьект второй формы
0
 Аватар для sergo_ukr
8 / 8 / 0
Регистрация: 22.07.2009
Сообщений: 58
30.07.2009, 05:23  [ТС]
А как все-таки с моим последним вопросом?
0
Комбайнёр
 Аватар для MAcK
1606 / 704 / 77
Регистрация: 27.05.2008
Сообщений: 2,535
30.07.2009, 08:33
Так нужно сразу так было и писать.
Теперь делаем всё подругому:

Form1:
C#
1
2
3
4
5
6
7
8
9
10
11
12
// имя радиокнопки пишешь сам 
public bool StandAll
{
    get { return RadioButton.Checked; }
    set { standAll = RadioButton.Checked; }
}
// имя радиокнопки пишешь сам 
public bool ExportAll
{
    get { return RadioButton.Checked; }
    set { RadioButton.Checked = value; }
}
В Form3

В конструкторе можно так:
C#
1
2
3
4
5
6
7
8
9
10
11
        private Form1 frmMain;
        public Form3(ref Form1 FrmMain)
        {
            InitializeComponent();
            frmMain = FrmMain;
        }
// Где-то в прорамме класса Form3
................
Radiobuton.checked = frmMain.ExportAll;
........
frmMain.ExportAll = Radiobuton.checked;

И при создании формы три:

C#
1
Form3 frm = new Form3(ref this);
0
 Аватар для sergo_ukr
8 / 8 / 0
Регистрация: 22.07.2009
Сообщений: 58
30.07.2009, 12:28  [ТС]
Попробовал, вывалилось 20 с лишним ошибок, явно что-то не то.
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
30.07.2009, 12:40
sergo_ukr, вот тут два самых дубовых, но рабочих способа это сделать, что не так, скажи - исправлю
Вложения
Тип файла: rar HLP_RadioButton+Button.rar (35.7 Кб, 25 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.07.2009, 12:40
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru