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

Как сделать бесконечный цикл при нажатии на кнопку

16.10.2015, 10:51. Показов 1876. Ответов 3
Метки нет (Все метки)

Я пробовал написать об этом в топике Обрабатывать по 56 символов в тексте и показывать промежуточные результаты, но может я начал с сильно сложного вопроса, давайте поставим более простую задачу.
У меня есть код, от которого я ожидаю, что он выведет 5 раз разные сообщения в текстовое поле:
C#
1
2
3
4
5
6
7
for (int i = 1; i < 5; i++)
            {   
                this.Controls["richTextBox2"].Text = s;
                s = s + i.ToString();
                Thread.Sleep(1000);
                //if (i == nSymbol) i = 1;
            }
В действительности у меня код выполняется до конца, и лишь потом результат выводится в текстовое окно. Поэтому давайте разберемся сначала с таким вопросом: как вывести в текстовое поле по очереди разные сообщения, чтобы пользователь мог видеть этот процесс?

Добавлено через 19 минут
Я пока сделал с помощью this.Refresh();

Добавлено через 1 минуту
Но непонятно, как остановить цикл повторным нажатием на кнопку.

Добавлено через 5 минут
То есть пример немного меняется, все в коде описано:
C#
1
2
3
4
5
6
7
8
string s = "Hello";
                for (i = 1; i <= 5; i = i+1){
                     s = s + i.ToString();
                     this.Controls["richTextBox2"].Text = s;
                     this.Refresh(); //Отлично обновляет текстовое окно
                    Thread.Sleep(100);
                    if (!btn1pos) { i = 5; } //Не работает так, потому что пока я в цикле, данные о событиях не обновляются, видимо
                     }
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.10.2015, 10:51
Ответы с готовыми решениями:

Как сделать, чтобы при первом нажатии на кнопку TButton появлялось одно сообщение, а при втором нажатии - другое?
помогите как сделать в чтобы в кнопке button при первом нажатий вылазило сообщение ShowMessage('Вы...

Бесконечный цикл с выходом при нажатии клавиши
Как это реализовать?

Как прервать цикл while при нажатии на кнопку выход
Я делаю программу, и мне надо когда пользователь нажмет на кнопку &quot;начать работу!!&quot; программа...

Memo в delphi / как сделать так чтобы при нажатии на кнопку memo появляется, при повторном нажатии исчезает
как сделать так чтобы при нажатии на кнопку текст с memo появляется, при повторном нажатии исчезает...

3
Модератор
Эксперт .NET
5812 / 4689 / 2940
Регистрация: 20.04.2015
Сообщений: 8,359
16.10.2015, 11:00 2
Лучший ответ Сообщение было отмечено lennen как решение

Решение

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Timer tmr;
int i;
public Form1()
{
    InitializeComponent();
    tmr = new Timer();
    tmr.Interval = 1000;
    tmr.Tick += new EventHandler(tmr_Tick);
    button1.Text = "Start";
}
 
void tmr_Tick(object sender, EventArgs e)
{
    textBox1.Text = (i++).ToString();
}
 
private void button1_Click(object sender, EventArgs e)
{
    tmr.Enabled = !tmr.Enabled;
    button1.Text = tmr.Enabled ? "Stop" : "Start";
    i = 0;
}
1
0 / 0 / 2
Регистрация: 14.09.2014
Сообщений: 123
16.10.2015, 11:57  [ТС] 3
Спасибо большое, все шикарно! А как правильно записать эту строчку?
C#
1
button1.ForeColor = tmr.Enabled ? 'Color.Green' : 'Color.DarkRed';
0
Модератор
Эксперт .NET
5812 / 4689 / 2940
Регистрация: 20.04.2015
Сообщений: 8,359
16.10.2015, 12:10 4
Цитата Сообщение от lennen Посмотреть сообщение
как правильно записать эту строчку?
так как она и написана, но только без кавычек
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.10.2015, 12:10

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

Файл: Как сделать так, чтобы при нажатии на 1-ую кнопку считывалася 1-ая строка, при нажатии на 2 - 2 строка и т.д.
На форме размещено 30 кнопок. В файле .txt размещено 30 строк. Как сделать так чтобы при нажатий на...

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

Можно ли создать бесконечный цикл, из которого выходит при нажатии любой клавиши?
Можно ли создать бесконечный цикл, из которого выходит при нажатии любой клавиши на клавиатуре?...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.