Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.62/21: Рейтинг темы: голосов - 21, средняя оценка - 4.62
3 / 2 / 1
Регистрация: 01.02.2019
Сообщений: 108

Передать значения из одного события в другое

09.11.2019, 20:13. Показов 4499. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.

Есть два события БаттонКлик 1 и БаттонКлик 2.
В первом вычисляем формулу (для упрощения запишу её так) - (a+b)*с
Во втором событии получаем по всяким другим выражениям N значений переменной b , которые нужно передать в событие 1, и пересчитать формулу.

Таким образом, на форме необходимо увидеть:
ТекстБокс1 - значение с b по умолчанию
ТекстБоксы2...N - новые значения.

Как лучше всего это реализовать? Подтолкните, пожалуйста, на правильное решение.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.11.2019, 20:13
Ответы с готовыми решениями:

Передать значения поля одного класса в другой класс
Здравствуйте, подскажите пожалуйста, как передать значения полей одно класса другому классу? sendRequest rqst = new sendRequest ();...

Как передать данные из одного события формы в другое?
На форме находятся два textbox, button и picturebox. Нужно по нажатию кнопки из textbox забрать координаты X и Y и нарисовать круг по этим...

Передача массива из одного события в другое
Здравствуйте. У меня имеется два текстбокса, две кнопки и чекбокс. Одна из кнопок создает массив и выводит его в текстбокс, другая же...

28
3566 / 2507 / 1174
Регистрация: 14.08.2016
Сообщений: 8,219
09.11.2019, 20:18
IchStudiereC, сделать b статическим полем класса, оба метода будут иметь к нему доступ с его актуальным значением
0
 Аватар для Enifan
1846 / 1188 / 501
Регистрация: 14.10.2018
Сообщений: 3,209
09.11.2019, 20:20
IchStudiereC, чет я не въехал что должно делать 2-ой событие, кому что передавать, но если много подсчетов, то может дополнительные методы создать? в них делать вычисления как угодно, а в БатонКликах вызывать их как хочется
C#
1
2
3
4
5
        private void button1_Click(object sender, EventArgs e) { Foo1(); }
        private void button2_Click(object sender, EventArgs e) { }
 
        void Foo1() { (a + b) * с }
        void Foo2() { }
0
3 / 2 / 1
Регистрация: 01.02.2019
Сообщений: 108
09.11.2019, 20:29  [ТС]
Enifan,
в первом событии одна большая формула - кнопку нажали, получили значение - вывели в ТекстБокс.
во втором событии - N формул поменьше, нажали кнопку, получили значения переменной b - пересчитали - вывели значения ((а+б)*с) в оставшиеся ТекстБоксы.
Не так много, оценочно, N = 7..9. Формулы простые. Операции самые примитивные.

Добавлено через 2 минуты
Diamante, а как их перебирать? нужно в массив записывать...?
0
3566 / 2507 / 1174
Регистрация: 14.08.2016
Сообщений: 8,219
09.11.2019, 20:54
неправильно прочитал задание...
тут нужно, как правильно подсказал Enifan, сделать метод, с этой формулой и по первой кнопке считать с дефолтным б, по второй высчитывать новые б и вызывать метод, передавая туда это новое б, результат выводить в тб. нужен тут массив или нет, из задачи не понятно, если нужно хранить значения, то нужен, если посчитали и забыли, то нет
0
3 / 2 / 1
Регистрация: 01.02.2019
Сообщений: 108
09.11.2019, 22:55  [ТС]
Diamante, понятно, надо почитать, что такое метод.
Значения б хранить не нужно.
А как иначе передать сразу несколько значений, если не массивом?
Как программа "поймёт", что пора брать следующее значение и т.д.?
0
3566 / 2507 / 1174
Регистрация: 14.08.2016
Сообщений: 8,219
10.11.2019, 01:12
IchStudiereC, метод в шарпе, это как функция,подпрограмма и т.д. и т.п.
Цитата Сообщение от IchStudiereC Посмотреть сообщение
передать сразу несколько значений
передать куда?и,главное, зачем?
как я понял: есть дефолтное значение б, тут считаем по кнопке 1
по кнопке 2 считаем какое-то б, исходя из некой формулы, передаем в метод, получаем результат и пишет в нужный тб; повторем при необходимости....
0
3 / 2 / 1
Регистрация: 01.02.2019
Сообщений: 108
10.11.2019, 11:22  [ТС]
Diamante, сейчас всё опишу, мб я некорректно спроектировал код (не программист, не учусь на него, а самоучусь )

Программа используется для расчёта величин.
1. На форме N-текстбоксов. Заполняем некоторое количество из них - жмём баттон1 - получаем результат. (В событии баттон1_клик разместил все переменные, формулу для расчёта) Надо было выносить в отдельный метод, а нажатием вызывать?

2. Если пользователь захотел посмотреть, какое влияние оказывают на величину другие факторы (количество - M), то он заполняет ещё пару десятков текстбоксов - жмёт баттон2. (В событии баттон2_клик разместил все переменные, формулы для расчёта). Тоже надо было выносить в отдельный метод?

Теперь возвращаемся к (а+b)*с.
b - принимает М(+1 по умолчанию) значений. Надо их как-то туда передать и вывести в текстбоксы, чтобы пользователь мог сравнить с первоначальным.

по кнопке 2 считаем какое-то b, исходя из некой формулы, передаем в метод, получаем результат и пишет в нужный тб; повторем при необходимости....
Там разные формулы для каждого нового b. Поэтому и подумал, мб сначала загнать все новые b в массив, а потом передать его куда надо?
0
 Аватар для Enifan
1846 / 1188 / 501
Регистрация: 14.10.2018
Сообщений: 3,209
10.11.2019, 11:30
IchStudiereC, предлагаю такой вариант. вы скидываете целиковый код той страницы, где происходит подсчет, а мы уже предлагаем конкретные версии.
0
3 / 2 / 1
Регистрация: 01.02.2019
Сообщений: 108
10.11.2019, 11:54  [ТС]
Enifan, мог бы дать любой кусочек кода, но вот именно расчёт не могу.
Мне б просто первотолчок получить или какой-нибудь пример на msdn...
0
215 / 149 / 48
Регистрация: 28.12.2016
Сообщений: 716
10.11.2019, 12:01
IchStudiereC, создайте отдельный класс для работы, а не храните данные в событиях кнопок.

C#
1
2
3
4
5
6
7
8
9
10
11
public class Test
{
private int a;
public int A {get {return a;}}
 
public void A1(int c) { a = a + c; }
public void A2(int c) { a = a - c; }
}
private Test test = new Test();
private void button1_Click(object sender, EventArgs e) { test.A1(); }
        private void button2_Click(object sender, EventArgs e) { test.A2(); }
1
3 / 2 / 1
Регистрация: 01.02.2019
Сообщений: 108
10.11.2019, 13:13  [ТС]
Defences, я с классами ещё не знаком...(
В классах нужно описать все переменные и формулы? А как туда попадут данные из текстбоксов?
ой-ой-ой
0
 Аватар для Enifan
1846 / 1188 / 501
Регистрация: 14.10.2018
Сообщений: 3,209
10.11.2019, 13:28
Цитата Сообщение от IchStudiereC Посмотреть сообщение
я с классами ещё не знаком
но зато работа происходит в WinForm.... Для начала с консолью освойтесь, основы подучите, а потом и WinForm осваивайте. Иначе так и будет каша в голове. Весь C# на классах построен.
0
215 / 149 / 48
Регистрация: 28.12.2016
Сообщений: 716
10.11.2019, 13:30
IchStudiereC, формулы описать там, внутри класса, а значения передавать в методы в виде параметров по типу
C#
1
public void A1(int c) { a = a + c; }
где c = параметр


или же в конструкторе объявлять сразу некоторые. Просто не понятно как лучше, ибо код ваш не виден))
0
3 / 2 / 1
Регистрация: 01.02.2019
Сообщений: 108
10.11.2019, 14:00  [ТС]
Enifan, у меня нет проблем с консольными приложениями на чистом с, на с# таковые ещё не делал.
Цитата Сообщение от Defences Посмотреть сообщение
Просто не понятно как лучше
Удаляюсь, чтобы изучить классы. И я не прощаюсь
0
880 / 559 / 291
Регистрация: 21.11.2012
Сообщений: 1,554
11.11.2019, 11:14
IchStudiereC,

делайте с классом, так правильней. если в формуле фигурируют 3 переменные, то их и стоит делать членами класса:

a = b + c
C#
1
2
3
4
5
6
public class MyClass
{
     public double a { get; set; }
     public double b { get; set; }
     public double c { get; set; }
}
если ввод b и с происходит в каких-то текстбоксах, то выглядеть это будет примерно так:

C#
1
2
3
4
5
6
7
8
private void Textbox1_Textchanged{object sender, EventArgs e)
{
       myClassInstance.b = Convert.ToDouble((sender as TextBox).Text);
}
private void Textbox2_Textchanged{object sender, EventArgs e)
{
       myClassInstance.c = Convert.ToDouble((sender as TextBox).Text);
}
расчет самой формулы сделайте методом:

C#
1
2
3
4
5
//MyClass.cs
public void Calculate()
{
      a = b + c;
}
далее в событии кнопки просто вызывайте нужный вам метод, а также отображайте в нужном вам текстбоксе:

C#
1
2
3
4
5
6
private void Button_Click(object sender, EventArgs e)
{
     myClassInstance.Calculate();
 
     resultTextBox.Text = myClassInstance.a;
}
думаю суть вы уловили и вам не составит труда вышеописанное применить к вашему заданию
1
3 / 2 / 1
Регистрация: 01.02.2019
Сообщений: 108
11.11.2019, 16:26  [ТС]
hamin, культура программирования приходит во время еды в процессе программирования) Спасибо.
В идеале надо стремиться к построению программ, как в книгах известных людей, например, Шилдта и т.п.?
0
 Аватар для Enifan
1846 / 1188 / 501
Регистрация: 14.10.2018
Сообщений: 3,209
11.11.2019, 16:32
Цитата Сообщение от IchStudiereC Посмотреть сообщение
например, Шилдта
Шилдт даст хорошие основы. лично от меня лайк данной книге.
0
11.11.2019, 16:39  [ТС]

Не по теме:

Enifan, изучал си по нему, пока не дошёл до списков, деревьев и т.п., потом меня как-то покоробило, и я забил :D
мб не бросил бы, не был бы сейчас таким ущербным типчиком в программировании :wall:

0
11.11.2019, 16:52

Не по теме:

Цитата Сообщение от IchStudiereC Посмотреть сообщение
изучал си по нему
не знал что Шилдт и про СИ написал книгу, лично я не полюбил данный язык. Макросы всю малину испортили, все говорят что макросы это зло, а на тестах только про них вопросы и задают. Спрашивается зачем?

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.11.2019, 16:52
Помогаю со студенческими работами здесь

Передача значений из одного события в другое
Оконное приложение обработки матрицы, вычисляющее сумму всех элементов матрицы и произведения элементов каждой строки матрицы. Как...

Передача переменных из одного события в другое
Встала такая проблема надо из button_Ckick1 и trackBar1_Scroll захватить переменные a1,b1,b, и передать их в button_Click2, рассчитываю на...

Перенос данных из одного события в другое
Допустим, при нажатии на button объявляется и генерируется массив. Как сделать, чтобы при нажатии на другой button, использовались данные,...

Передать переменную из одного окна в другое
Здравствуйте! В первом окне, есть метка, для неё я задал переменную i = 999; А во втором окне, есть combobox, с 3-я значениями , нужно из...

Передать сообщение из одного окна в другое
У кого есть мысли по этому поводу?


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 17.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты 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. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru