0 / 0 / 0
Регистрация: 15.09.2018
Сообщений: 62
1

Почему смена текста работает только один раз? Что неправильно в коде и почему?

08.12.2018, 19:13. Показов 1017. Ответов 7
Метки нет (Все метки)

Нужно чтобы при щелчке мыши на поверхности кнопки текст метки Label изменялся на текст окна редактора текста (TextBox).

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
partial class Form1
    {
        /// <summary>
        /// Обязательная переменная конструктора.
        /// </summary>
        private System.ComponentModel.IContainer components = null;
 
        /// <summary>
        /// Освободить все используемые ресурсы.
        /// </summary>
        /// <param name="disposing">истинно, если управляемый ресурс должен быть удален; иначе ложно.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }
 
        #region Код, автоматически созданный конструктором форм Windows
 
        /// <summary>
        /// Требуемый метод для поддержки конструктора — не изменяйте 
        /// содержимое этого метода с помощью редактора кода.
        /// </summary>
        private void InitializeComponent()
        {
            this.button = new System.Windows.Forms.Button();
            this.label = new System.Windows.Forms.Label();
            this.textbox = new System.Windows.Forms.TextBox();
            this.SuspendLayout();
            // 
            // button
            // 
            this.button.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(192)))));
            this.button.Location = new System.Drawing.Point(328, 303);
            this.button.Name = "button";
            this.button.Size = new System.Drawing.Size(139, 78);
            this.button.TabIndex = 0;
            this.button.Text = "Изменить";
            this.button.UseVisualStyleBackColor = false;
            this.button.Click += new System.EventHandler(this.button_Click);
            // 
            // label
            // 
            this.label.BackColor = System.Drawing.SystemColors.ActiveCaption;
            this.label.ForeColor = System.Drawing.SystemColors.ActiveCaptionText;
            this.label.Location = new System.Drawing.Point(322, 152);
            this.label.Name = "label";
            this.label.Size = new System.Drawing.Size(145, 64);
            this.label.TabIndex = 1;
            this.label.Text = "Добрый день";
            this.label.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
            // 
            // textbox
            // 
            this.textbox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(192)))), ((int)(((byte)(255)))));
            this.textbox.ForeColor = System.Drawing.Color.Black;
            this.textbox.Location = new System.Drawing.Point(311, 257);
            this.textbox.Name = "textbox";
            this.textbox.Size = new System.Drawing.Size(166, 22);
            this.textbox.TabIndex = 2;
            this.textbox.Text = "Добрый вечер\r\n\r\n";
            this.textbox.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
            // 
            // Form1
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.BackColor = System.Drawing.Color.BlueViolet;
            this.ClientSize = new System.Drawing.Size(800, 450);
            this.Controls.Add(this.textbox);
            this.Controls.Add(this.label);
            this.Controls.Add(this.button);
            this.Name = "Form1";
            this.Text = "Form1";
            this.ResumeLayout(false);
            this.PerformLayout();
 
        }
 
        #endregion
 
        private System.Windows.Forms.Button button;
        private System.Windows.Forms.Label label;
        private System.Windows.Forms.TextBox textbox;
    }
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 public partial class Form1 : Form
    {
        int count = 0;
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button_Click(object sender, EventArgs e)
        {
            count++;
            int z = count % 2;
            if (z == 0)
                label.Text = label.Text;
            else
                label.Text = textbox.Text;
        }
    }
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.12.2018, 19:13
Ответы с готовыми решениями:

Я не понимаю почему работает только один раз
по идеи код должен выполнятся бесконечность раз, но почему то работает только один раз почему?? ...

Почему код запускается только один раз?
Всем привет. Кто знает почему этот код запускается только 1 раз? $(function() {...

Почему цикл считается только один раз?
Вводится точность e. Вычислить сумму ряда http://e.tsi.lv/file.php/33/LabRab/lr4/ris/lr4_ris5.JPG...

Почему InvokeRepeating отрабатывает только один раз?
Здравствуйте! Изучаю Unity3D и наткнулся на интересный туториал:...

7
Эксперт .NET
16659 / 12425 / 3266
Регистрация: 17.09.2011
Сообщений: 20,642
08.12.2018, 19:34 2
Цитата Сообщение от Ferruw Посмотреть сообщение
Почему смена текста работает только один раз?
Изначальное состояние: label.Text = "А", textbox.Text = "B".
Первый щелчок: z = 1, значит выполняется блок else: label.Text = textbox.Text, label.Text = "B"
Второй щелчок: z = 0, значит выполняется блок if: label.Text = label.Text, то есть снова "В".

Цитата Сообщение от Ferruw Посмотреть сообщение
Что неправильно в коде и почему?
Как вы думаете, исходя из вышесказанного?
0
0 / 0 / 0
Регистрация: 15.09.2018
Сообщений: 62
08.12.2018, 20:56  [ТС] 3
Цитата Сообщение от kolorotur Посмотреть сообщение
Сообщение от Ferruw
Почему смена текста работает только один раз?
Изначальное состояние: label.Text = "А", textbox.Text = "B".
Первый щелчок: z = 1, значит выполняется блок else: label.Text = textbox.Text, label.Text = "B"
Второй щелчок: z = 0, значит выполняется блок if: label.Text = label.Text, то есть снова "В".
Сообщение от Ferruw
Что неправильно в коде и почему?
Как вы думаете, исходя из вышесказанного?
Получается мы здесь задаем значения...присваиваем? Значит мы должны тут конкретно указывать через "..."??
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 public partial class Form1 : Form
    {
        int count = 0;
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button_Click(object sender, EventArgs e)
        {
            count++;
            int z = count % 2;
            if (z == 0)
                label.Text = "Добрый день";
            else
                label.Text = "Добрый вечер";
        }
    }
0
Эксперт .NET
16659 / 12425 / 3266
Регистрация: 17.09.2011
Сообщений: 20,642
08.12.2018, 21:04 4
Цитата Сообщение от Ferruw Посмотреть сообщение
Получается мы здесь задаем значения...присваиваем?
Ну да, оператор = — это присваивание значения.

Цитата Сообщение от Ferruw Посмотреть сообщение
Значит мы должны тут конкретно указывать через "..."?
Не обязательно, но если вы перезаписываете текущий текст другим и планируете потом восстановить исходный текст, то перед перезаписыванием имеет смысл этот исходный текст где-нибудь сохранить.
0
0 / 0 / 0
Регистрация: 15.09.2018
Сообщений: 62
08.12.2018, 21:09  [ТС] 5
Цитата Сообщение от kolorotur Посмотреть сообщение
Сообщение от Ferruw
Значит мы должны тут конкретно указывать через "..."?
Не обязательно, но если вы перезаписываете текущий текст другим и планируете потом восстановить исходный текст, то перед перезаписыванием имеет смысл этот исходный текст где-нибудь сохранить.
Я просто хотела таким образом, в случае если мы изменим текст этих полей на что-то другое, чтобы задание работало корректно, а не нужно было переписывать и это тоже, помимо самого текста
0
Эксперт .NET
16659 / 12425 / 3266
Регистрация: 17.09.2011
Сообщений: 20,642
08.12.2018, 21:12 6
Цитата Сообщение от Ferruw Посмотреть сообщение
в случае если мы изменим текст этих полей на что-то другое, чтобы задание работало корректно, а не нужно было переписывать и это тоже, помимо самого текста
Так и не надо.
Перед тем, как перезаписывать текст — сохраняйте его в какой-нибудь переменной (в том же свойстве Tag лейбла).
0
0 / 0 / 0
Регистрация: 15.09.2018
Сообщений: 62
08.12.2018, 23:46  [ТС] 7
Цитата Сообщение от kolorotur Посмотреть сообщение
Сообщение от Ferruw
в случае если мы изменим текст этих полей на что-то другое, чтобы задание работало корректно, а не нужно было переписывать и это тоже, помимо самого текста
Так и не надо.
Перед тем, как перезаписывать текст — сохраняйте его в какой-нибудь переменной (в том же свойстве Tag лейбла).
Я вот только так записала, но при этом все равно остается изменяемой вручную label.Text
Код
 public partial class Form1 : Form
    {
        int count = 0;

        public Form1()
        {
            InitializeComponent();
        }

        private void button_Click(object sender, EventArgs e)
        {
            count++;
            string a = textbox.Text;
            int z = count % 2;
            if (z == 0)
                label.Text = "Добрый день";
            else
                label.Text = a;
        }
    }
0
Эксперт .NET
16659 / 12425 / 3266
Регистрация: 17.09.2011
Сообщений: 20,642
08.12.2018, 23:59 8
C#
1
2
3
4
5
6
7
8
9
10
11
12
        private void button_Click(object sender, EventArgs e)
        {
            count++;
            int z = count % 2;
            if (z == 0)
                label.Text = label.Tag as string ?? label.Text;
            else
            {
                label.Tag = label.Text;
                label.Text = textbox.Text;
            }
        }
Не торопитесь сразу писать код — обдумайте как следует ситуацию. Можно даже на листочке набросать примерную блок-схему.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.12.2018, 23:59
Помогаю со студенческими работами здесь

Почему setInterval срабатывает только один раз?
впервые столкнулся с этой функцией, и вот в чем проблема: new_image.style.opacity = 0.1;...

Событие срабатывает только один раз. почему?
Есть два radioButton в одной группе. У каждого событие OnCheckedChanged protected void...

Почему неправильно работает выборка только с 1 значением?
Всем доброго времени суток Подскажите что не так с запросом на выборку: Если запрос выглядит так:...

В цикле почему-то проходит по условию только один раз
Задача такая: Дан одномерный массив и натуральных чисел. Удалить из него все тройки подряд идущих...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru