pachela Опубликовано 28 января, 2018 Поделиться Опубликовано 28 января, 2018 Новый камень спотыкания это как передать переменную в Label второй формы. Проблем тут несколько, ведь переменной значение присваивается в одном поток, ну и плюс ее нужно передать в Label второго окна. Когда была 1 форма, то изменял Label так: label3.Invoke(new Action(() => label3.Text = forwardspeed.ToString())); Так вот как сделать, что бы сразу как присваивается значение переменной, то и менялся Label? Пока что поиск в гугле не дал своих плодов. С кулаками не бросаться, ведь я только учусь. Ссылка на комментарий Поделиться на другие сайты Поделиться
ReWanet Опубликовано 28 января, 2018 Поделиться Опубликовано 28 января, 2018 (изменено) А это не поможет? Вроде как гуглится за пару секунд же duckduckgo Изменено 28 января, 2018 пользователем ReWanet Ссылка на комментарий Поделиться на другие сайты Поделиться
X86Jumps Опубликовано 28 января, 2018 Поделиться Опубликовано 28 января, 2018 а что нет переменных окон, чтобы к ним обращаться друг к другу?form1,form2? Ссылка на комментарий Поделиться на другие сайты Поделиться
pachela Опубликовано 28 января, 2018 Автор Поделиться Опубликовано 28 января, 2018 2 ReWanet это все не то! Гуглится все отлично, но не то, что нужно. 2 X86Jumps Переменные есть, просто танцевал с бубном. А когда выкурил весь бамбук и решил вделать все просто, то получилось, но все равно не то пальто. Такс, что есть на сейчас. Влипил я в форме 2 в инициализации лейбл label5.Text = Form1.updownfreez.ToString(); Он выводит нужное содержимое переменной. НО!!! Но выводит только при запуске 2 окна. И не меняется при изменении переменной. Теперь же мне нужно добиться, что бы если изменится переменная, к примеру с False на True, то в форме2 в лейбле было написано не False, а True. Ссылка на комментарий Поделиться на другие сайты Поделиться
X86Jumps Опубликовано 28 января, 2018 Поделиться Опубликовано 28 января, 2018 в начале не было про то что если меняется переменная, то меняется и в 2й форме проще тогда как указатель на переменную делать и присвоить адрес нужной переменной тогда что хочешь меняй а выводит потому что как он при не видимой 2й форме тебе покажет что то?))) Ссылка на комментарий Поделиться на другие сайты Поделиться
pachela Опубликовано 28 января, 2018 Автор Поделиться Опубликовано 28 января, 2018 (изменено) Какая то ересь происходит, походу пора идти спать... Приходится редактировать пост... Сделал сейчас следующее, создал в форме 2 поток, который тупо обновляет лейбл. Получилось так: Скрытый текст public Form2() { InitializeComponent(); Thread potok = new Thread(MyThreade); potok.IsBackground = true; potok.Start(); } public void MyThreade() { while (Form1.flag2 == 1) { label5.Invoke(new Action(() => label5.Text = Form1.updownfreez.ToString())); } } Только вот беда, не получается теперь прервать поток если закрываю форму2... Либо я что то не то творю, либо реально пора спать... Изменено 28 января, 2018 пользователем pachela Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 29 января, 2018 Поделиться Опубликовано 29 января, 2018 Зачем тебе поток? Описываешь делегат, по нему описываешь событие, сразу после изменения значения переменной вызываешь событие с передачей в него нового значения переменной. Во второй форме подписываешься на это событие, и в обработчике меняешь лейбл. И ноу проблем. Ссылка на комментарий Поделиться на другие сайты Поделиться
pachela Опубликовано 29 января, 2018 Автор Поделиться Опубликовано 29 января, 2018 2 Xipho На костер тебя шамана! Из выше всего сказанного, я понял только половину =))). Приведи пример кода, нагляднее хоть будет. Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 29 января, 2018 Поделиться Опубликовано 29 января, 2018 2 часа назад, pachela сказал: 2 Xipho На костер тебя шамана! Из выше всего сказанного, я понял только половину =))). Приведи пример кода, нагляднее хоть будет. А что там приводить? Объявляешь делегат. Объявляешь в нужном классе (где меняется переменная) нужное событие. В этом же классе вызываешь нужное событие сразу после изменения переменной. В классе формы, где нужно изменить лейбл, подписываешься на это событие (добавляешь обработчик). И в обработчике события обновляешь лейбл. http://csharpindepth.com/Articles/Chapter2/Events.aspx Ссылка на комментарий Поделиться на другие сайты Поделиться
saiberpro Опубликовано 29 января, 2018 Поделиться Опубликовано 29 января, 2018 (изменено) Как передать данные из одной формы в другую. Описаны 7 способов передачи данных. Самый простым способом является создание открытого класса и поля. Изменено 29 января, 2018 пользователем saiberpro 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 30 января, 2018 Поделиться Опубликовано 30 января, 2018 20 часов назад, saiberpro сказал: Как передать данные из одной формы в другую. Описаны 7 способов передачи данных. Самый простым способом является создание открытого класса и поля. Если формы крутятся в разных потоках, или же переменная обновляется в другом потоке, то это не лучшее решение. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения