Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
10 / 8 / 3
Регистрация: 14.12.2018
Сообщений: 60

Связь между классами

27.07.2019, 20:13. Показов 2556. Ответов 3

Студворк — интернет-сервис помощи студентам
Хочу задать такой вопрос)
Есть некие static class Class_CLahf и Class_VEofC, который содержит функции, в этих функциях идёт работа с компонентами fonForm.
C#
1
2
3
4
5
6
7
8
        public FonForm()
        {
            InitializeComponent();
            textBoxes_version1 = new List<TextBox>() { number_textbox_version_1,name_textbox_version_1,rsourceslink_textbox_version_1,brandname_textbox_version_1,ourlink_textbox_version_1,party_textbox_version_1,adress_textbox_version_1};
            textBoxes_version2 = new List<TextBox>() { Adress_textbox, Name_Author_textbox, Link_Resources_textbox, Our_Link_textbox, email_textbox, Party_textbox,string_textBox,number_textBox,type_resources_textbox, type_tochki_textBox};
            Class_CLahf.fonForm = this;
            Class_VEofC.fonForm = this;
        }
В классах создал экземпляр fonForm, и при инициализации fonForm указываю, что форма была инициализирована, и можно работать, но увы, программа не реагирует вообще или говорит, что форма ещё не была создана.

Вопрос, как передать в статический класс ссылку на компонент из формы?
На примере такого кода
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        public static void Select_Type_Resources_special(RadioButton radioButton, bool text)
        {
            if (radioButton.Checked == true)
            {
                fonForm.type_resources_textbox.Text = "Свой вариант";
                fonForm.type_resources_textbox.ForeColor = Color.Gray;
                fonForm.ActiveControl = null;
                if (text == false)
                    field_letter[5] = "Please update your " + radioButton.Text;
                else field_letter[5] = "Please update the " + radioButton.Text;
                checked_type_resources = radioButton;
                fonForm.vec_radioButton3.Checked = true;
            }
        }
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.07.2019, 20:13
Ответы с готовыми решениями:

Доступ между классами
Всем добрый день. У меня есть программа, на примере которой нас начали учить ООП (в коде часть проги). Значить есть кнопка, по нажатие...

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

передача параметров между классами
есть форма. У формы есть контролы(элементы управления). Н-р textBox1. И кнопка button1. Также имеется класс , н-р sobakas.cs Я...

3
215 / 149 / 48
Регистрация: 28.12.2016
Сообщений: 716
27.07.2019, 20:42
Чайник1234,
Так

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
  public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            Helper.Method(checkBox1);
        }
    }
 
    static class Helper
    {
        public static void Method(CheckBox chb)
        {
            if (chb.Checked)
                chb.Text = "A";
        }
    }
или так
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            checkBox1.Method();
        }
    }
    
 
    static class CheckBoxExtension
    {
        public static void Method(this CheckBox chb)
        {
            if (chb.Checked)
                chb.Text = "A";
        }
    }
1
10 / 8 / 3
Регистрация: 14.12.2018
Сообщений: 60
27.07.2019, 21:01  [ТС]
За ответ спасибо, но это не совсем то, что я хотел бы узнать)
Мне просто не хочется прописывать много ссылок на один и тот же компонент)
Проблема в том, что раньше методы в этих классах были в классе формы, но программа растёт, кода становится много и пришлось перекидать функции по отдельным классам(

Мне нужно именно то, что, вроде бы, объяснил в тексте выше:
Создать связь между классом fonForm и классами Class_CLahf и Class_VEofC
Class_CLahf и Class_VEofC это 2 отдельные классы, в отдельных файлах, из-за приличного объема кода=(
0
215 / 149 / 48
Регистрация: 28.12.2016
Сообщений: 716
27.07.2019, 21:30
Лучший ответ Сообщение было отмечено Чайник1234 как решение

Решение

Чайник1234, это не правильный подход. К тому же передав ссылку на класс формы, вы не будете иметь доступ к контролам, так как они все private. Советую просто делать методы расширения и таким образом разгрузите форму.

Добавлено через 3 минуты
C#
1
2
3
4
5
6
7
8
9
 public static void Select_Type_Resources_special(this RadioButton rBtnMain, RadioButton rBtnOther, TextBox tb)
        {
            if (rBtnMain.Checked == false)
                   return;
            
                tb.Text = "Свой вариант";
                tb.ForeColor = Color.Gray;
                rBtnOther.Checked = true;
        }
Добавлено через 5 минут
Конечно если этот код встречается в неск. местах.
А так же вы можете использовать UserControl и там описывать логику.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.07.2019, 21:30
Помогаю со студенческими работами здесь

Передача данных между классами
есть: public partial class Controller_MainForm : Form в котором есть переменные public int cordX, cordY; которые необходимо передать...

Передача информации между классами
Доброе время суток, интересует такой вопрос. собственно как передавать информацию между классами, то есть у меня есть Form1 и Class1 ...

Передача массива объектов между классами
В общем проблема следующая - есть общий для всех классов ArrayList. Доступ к нему делаю через отдельный статический класс, как один из...

Трудности с передачей значений между классами
Событие первого класса DAL dal; Lecture lecture; public void panelClick(object sender, EventArgs e) ...

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Первый деплой
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