Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
1 / 1 / 0
Регистрация: 07.06.2016
Сообщений: 75

Запуск метода из отдельного класса нажатием кнопки

29.10.2022, 21:38. Показов 2876. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, уважаемые форумчане.
Пример кода, в котором у меня затруднение возникает:
Код в Class_1
C#
1
2
3
4
5
6
7
8
 public class Class_1
{
       
        public void Decision()
        {
          //код программы
        }
}
Код в Form1
C#
1
2
3
4
5
6
7
8
9
public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            Decision();
        }
Вопрос: как запустить метод из класса 1 (Class_1.cs) при нажатии на кнопку, созданную в форме 1 (Form1cs). Скрин как это выглядит прилагаю.
Пытался вызов указать в Button_Click, но выдает ошибку имя "Decision" не существует в данном контексте. Хотя вроде бы я Метод сделал публичным для доступа.
Подскажите, пожалуйста, как решить проблему.
Миниатюры
Запуск метода из отдельного класса нажатием кнопки  
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.10.2022, 21:38
Ответы с готовыми решениями:

Какие общие правила для написания отдельного класса/файла с условием/заданием и отдельного класса с методом решен?
Например: условие задания: public class Main { public static void main(String args) { int source = {1, 2, 3, 4, 5, 6, 7, 8,...

Matlab Guide. Запуск одной кнопки нажатием второй
Здравствуйте. Вопрос, вероятно, довольно простой, но я не могу сообразить как это работает. Допустим есть две кнопки pushbutton. Надо...

Подскажите плагин IDEA, который показывает покрытие кода отдельного класса или метода
Подскажите плагин, который показывает покрытие кода отдельного класса или метода.

7
77 / 50 / 29
Регистрация: 21.10.2022
Сообщений: 114
29.10.2022, 22:39
Лучший ответ Сообщение было отмечено Free1 как решение

Решение

Два варианта, создать экземпляр класса и вызвать его метод


C#
1
2
3
4
5
6
        private void button1_Click(object sender, EventArgs e)
        {
            Class_1  cls = new Class_1();
            cls.Decision();
 
        }
Или, если в Decision не нужны доступы к переменным экземпляра - сделать его статическим

C#
1
2
3
4
        public static void Decision()
        {
            MessageBox.Show("Hello");
        }
И вызывать так
C#
1
2
3
4
        private void button1_Click(object sender, EventArgs e)
        {
            Class_1.Decision();
        }
1
1 / 1 / 0
Регистрация: 07.06.2016
Сообщений: 75
30.10.2022, 00:08  [ТС]
Огромное спасибо. Работает

Добавлено через 1 час 14 минут
Еще вопрос: А как сделать, чтобы переменные созданные в button1_Click были доступны в методе Decision() класса Class_1

Добавлено через 3 минуты
И если например в Decision() я обращаюсь к созданным на форме textBox'ам они тоже недоступны. Как можно к "компонентам" формы Form1 обратиться из Decision()?
0
2394 / 1923 / 763
Регистрация: 27.07.2012
Сообщений: 5,568
30.10.2022, 00:19
Цитата Сообщение от Free1 Посмотреть сообщение
А как сделать, чтобы переменные созданные в button1_Click были доступны в методе Decision() класса Class_1
Передать их аргументами в метод.
Цитата Сообщение от Free1 Посмотреть сообщение
Как можно к "компонентам" формы Form1 обратиться из Decision()?
Точно также, можно передать эти компоненты в метод. Можно сделать их в Form1 открытыми (public), и передать в метод только сам объект формы. Однако, всё это довольно "тухлые" решения. Зачем вам такое понадобилось?
1
1 / 1 / 0
Регистрация: 07.06.2016
Сообщений: 75
30.10.2022, 01:52  [ТС]
Просто хочется разбить код на небольшие элементы. Не хотелось бы помещать весь код в одну кнопку, так как все равно результат нажатия зависит от разных условий.
Скажем есть условие, которое зависит от содержимого textBox1. Ту часть кода, где условие выполняется я вынес в отдельный класс. Просто если оно не выполняется нет смысла в части кода. А так хотя бы код становится поменьше и компактнее. Поэтому разделял его на методы.
Попробовал поменять в Form1.Designer.cs компоненты с private на public, они все равно не видны в классе

Добавлено через 38 минут
Если не трудно прошу показать код для такого решения
0
2394 / 1923 / 763
Регистрация: 27.07.2012
Сообщений: 5,568
30.10.2022, 09:11
Цитата Сообщение от Free1 Посмотреть сообщение
Если не трудно прошу показать код для такого решения
Лучше сначала покажите код, который у вас уже есть для этого решения. Так разговор будет предметнее. Так как из этого
Цитата Сообщение от Free1 Посмотреть сообщение
Попробовал поменять в Form1.Designer.cs компоненты с private на public, они все равно не видны в классе
совершенно не понятно, где там у вас что не видно, и что вы вообще пытались сделать.
0
1 / 1 / 0
Регистрация: 07.06.2016
Сообщений: 75
30.10.2022, 15:17  [ТС]
Просто в текстбоксах у меня хранятся ссылки к Папкам на Рабочем столе в виде массивов. Но бывают случаи, когда папка отсутствует. Как реализовать такой способ, чтобы в случае, если папки нет, то программа данный массив просто "игнорила".
Я пытался это решать через условия if. Но если Textbox'ов много, папко много, то этих условий тоже много получается, я не хочу перегружать код повторными командами по несколько раз. Поэтому хотел сделать это с помощью отдельных классов.
Если можете предложить другой вариант и поясните как его реализовать я буду благодарен.
0
2394 / 1923 / 763
Регистрация: 27.07.2012
Сообщений: 5,568
30.10.2022, 19:40
Цитата Сообщение от Free1 Посмотреть сообщение
Я пытался это решать через условия if. Но если Textbox'ов много, папко много, то этих условий тоже много получается
Как бы массив предполагает, что его можно обрабатывать в цикле. Не очень понятно, как от количества папок может увеличиваться количество условий.

Цитата Сообщение от Free1 Посмотреть сообщение
я не хочу перегружать код повторными командами по несколько раз. Поэтому хотел сделать это с помощью отдельных классов.
А отдельными классами, значит, перегружать вполне хотите? )

Цитата Сообщение от Free1 Посмотреть сообщение
Если можете предложить другой вариант и поясните как его реализовать я буду благодарен.
Пока вы не приводите свой вариант кода, предложить какой-то "другой" врядли получится. Было бы неплохо увидеть, что вы там и как "перегружаете", и как вообще у вас там всё устроено.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.10.2022, 19:40
Помогаю со студенческими работами здесь

Работа с мышью: вывести квадрат нажатием левой кнопки мыши и спрятать его нажатием правой кнопки мыши
Ребят обьясните как вывести квадрат левым нажатием кнопки мыши и спрятав его правым нажатием кнопки мыши. Вот набросок кода ...

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

Запуск нескольких программ с автоматическим нажатием кнопки "OK" в появляющихся окнах
Добрый день. Подскажите по такому вопросу, есть простой батник который запускает небольшое количество программ @echo start C:\1.exe ...

Запуск метода из другого класса в потоке
Доброго времени суток форумчане. Окажите пожалуйста содействие постигающим, так сказать. Код с главной формы - кнопки в которой...

Запуск метода класса в новом потоке
Здравствуйте, у меня есть класс, в нём функция - необходимо вызвать эту функцию в нескольких потоках, возможно ли это?


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru