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

Не изменяется значение переменной в методе

20.10.2021, 08:12. Показов 2247. Ответов 9

Студворк — интернет-сервис помощи студентам
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
32
33
34
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace Mouse_Clicker
{
    public partial class SelectButton : Form
    {
        public SelectButton()
        {
            InitializeComponent();
        }
 
        public string SimbolActivate = string.Empty;
 
        private void SelectButton_KeyPress(object sender, KeyPressEventArgs e)
        {
            SimbolActivate = e.ToString(); /* Здесь переменная должна получать новое значение. 
                                            Мне кажется, проблема в том, что я дальше никуда
                                            не передаю это значение и оно остаётся в методе. 
                                            Но как мне передать значение дальше? Я не могу    
                                            использовать ref и out, а так же сделав SimbolActivate
                                            статическим проблема не исчезла */
            
            this.Close();
        }
    }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.10.2021, 08:12
Ответы с готовыми решениями:

Изменяется значение переменной
Привет, не понятно почему меняется значение переменной Theme.ID, в первой форме принимает значение 1,а после перехода на вторую по не...

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

Почему изменяется значение переменной?
Помогите новичку. Я пишу простейший код, но в строках 34-38 происходит что-то странное. Переменная i как-будто становится ссылкой и при...

9
Эксперт .NET
 Аватар для Rius
13129 / 7690 / 1676
Регистрация: 25.05.2015
Сообщений: 23,460
Записей в блоге: 14
20.10.2021, 08:14
Всё изменяется, этого достаточно. А вот событие наверное и не вызывается как раз. Читайте про key press.
0
1 / 1 / 0
Регистрация: 04.03.2021
Сообщений: 6
20.10.2021, 08:21  [ТС]
C#
1
2
3
4
5
6
public string SimbolActivate = string.Empty;
private void SelectButton_KeyDown(object sender, KeyEventArgs e)
{
    SimbolActivate = e.ToString();
    this.Close();
}
Я поменял событие на KeyDown, в работе которого я абсолютно уверен, но проблема не решилась. Проверяю я это тем, что передаю значение SimbolActivate в класс home, где вывожу его в label1:
C#
1
2
3
4
5
private void home_Load(object sender, EventArgs e)
{
    SelectButton sb = new SelectButton();
    label1.Text = sb.SimbolActivate;
}
На label1 выводится значение null (Пусто на месте контрола)
0
Эксперт .NET
 Аватар для Rius
13129 / 7690 / 1676
Регистрация: 25.05.2015
Сообщений: 23,460
Записей в блоге: 14
20.10.2021, 08:39
Лучший ответ Сообщение было отмечено Shiz02 как решение

Решение

Цитата Сообщение от Shiz02 Посмотреть сообщение
где вывожу его в label1
Да нет, вовсе НЕ ЕГО.
Это стандартная ошибка новичков:
Они создают класс формы, который что-то принимает от пользователя. Закрывают форму. А когда надо обратиться к данным, создают новый экземпляр в странном предположении, что там будут данные от предыдущего экземпляра.
0
1 / 1 / 0
Регистрация: 04.03.2021
Сообщений: 6
20.10.2021, 08:40  [ТС]
Я приблизительно понял о чём вы говорите, но можете помочь с примером кода?
0
Эксперт .NET
 Аватар для Rius
13129 / 7690 / 1676
Регистрация: 25.05.2015
Сообщений: 23,460
Записей в блоге: 14
20.10.2021, 08:45
Задачу опишите.
0
1 / 1 / 0
Регистрация: 04.03.2021
Сообщений: 6
20.10.2021, 08:53  [ТС]
Я вот ещё попробовал сделать так, но всё равно ничего не вышло
C#
1
2
3
4
5
6
private void SelectButton_KeyDown(object sender, KeyEventArgs e)
{
    home h = new home();
    h.label1.Text = e.ToString();
    this.Close();
}
Задача заключается вот в чём. На форме home есть некие контролы: кнопка selectButtonActivate и label1, последний из которых показывает выбранную клавишу на клавиатуре. Кнопка selectButtonActivate вызывает новую форму selectButton, у которой есть событие KeyDown. В событие мы получаем нажатую клавишу и отправляем её на label1, а после закрываем форму SelectButton. Я никак не могу вывести на label1 выбранную клавишу :/
0
Эксперт .NET
 Аватар для Rius
13129 / 7690 / 1676
Регистрация: 25.05.2015
Сообщений: 23,460
Записей в блоге: 14
20.10.2021, 09:04
Лучший ответ Сообщение было отмечено Shiz02 как решение

Решение

FormHome:
C#
1
2
3
4
5
6
7
8
9
10
private string selectedButton = string.Empty;
 
private void  selectButtonActivate_Click(object sender, EventArgs e) {
  using (var form = new FormSelectButton()) {
    form.ShowModal();
    this.button = form.SelectedButton;
  }
 
  this.label1.Text = this.selectedButton;
}
FormSelectButton:
C#
1
2
3
4
5
6
public string SelectedButton { get; set; } = string.Empty;
 
private void SelectButton_KeyDown(object sender, KeyEventArgs e) {
  this.SelectedButton = e.ToString();
  this.Close();
}
1
1 / 1 / 0
Регистрация: 04.03.2021
Сообщений: 6
21.10.2021, 05:16  [ТС]
FromHome:
C#
1
2
3
4
5
6
7
8
9
10
11
private string selectedButton = string.Empty;
 
private void  selectButtonActivate_Click(object sender, EventArgs e) {
    using (var form = new FormSelectButton()) // Для чего тут using? Можно ведь просто создать объект и работать с ним 
    {
    form.ShowModal();
    this.button = form.SelectedButton; // Тут вы присваиваете какому-то баттону нажатую клавишу - зачем?
    }
 
  this.label1.Text = this.selectedButton;
}
А ещё, форма selectButton закрывается мгновенно. По задумке она должна появиться с надписью "Нажмите любую клавишу", а потом исчезнуть после нажатия
0
Эксперт .NET
 Аватар для Rius
13129 / 7690 / 1676
Регистрация: 25.05.2015
Сообщений: 23,460
Записей в блоге: 14
21.10.2021, 06:37
Лучший ответ Сообщение было отмечено Shiz02 как решение

Решение

C#
1
using (var form = new FormSelectButton()) // Для чего тут using? Можно ведь просто создать объект и работать с ним
Form'ы реализуют интерфейс IDisposable, привыкайте использовать с такими классами using.
На крыше электрички тоже можно ведь просто прокатиться? Один раз, два, и потом прямиком в морг. А может и с первого же раза.

C#
1
this.button = form.SelectedButton; // Тут вы присваиваете какому-то баттону нажатую клавишу - зачем?
вот так:
C#
1
this.selectedButton = form.SelectedButton; // Тут вы присваиваете какому-то баттону нажатую клавишу - зачем?
Затем, что свойства всяких label нельзя использовать для хранения данных. Если, конечно, вы где-то ещё полученное значение используете.

Добавлено через 14 минут
Цитата Сообщение от Shiz02 Посмотреть сообщение
А ещё, форма selectButton закрывается мгновенно.
Потому что вы вместо ShowModal написали просто Show.
ShowModal да, нету, это из другого языка. Здесь это ShowDialog.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.10.2021, 06:37
Помогаю со студенческими работами здесь

Не изменяется значение переменной в объекте
Переменная health меняет своё значение только внутри функции punch(), при этом её значение в объектах a и b остаётся неизменным. Как...

Значение глобальной переменной в потоке не изменяется
Здравствуйте! У меня возник вопрос по поводу потоков.:help: Есть глобальная переменная i, которая изменяется через определнный промежуток...

Почему значение переменной Result не изменяется?
Подскажите почему значение переменной Result не изменяется (возвращается 0). static int Solution(int ResArray) { ...

Почему не изменяется значение переменной внутри функции?
Есть функция: void get_string(struct str* tmp, int start, double summ) { double q = summ; int index = start; int temp...

Почему изменяется значение переменной между функциями класса?
Почему-то изменяется значение переменной m(кол-во специальностей) в output_spec. Пробовал в других средах покомпилить, но m все равно...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru