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

Textbox.text=Stack.Pop() не работает

27.01.2017, 23:55. Показов 894. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Каким образом работает stack.pop() ?
Хочу реализовать функцию Undo

Записую в Stack текст с формы при изменении текста
C#
1
2
3
4
        private void Output_tb_TextChanged(object sender, EventArgs e)
        {
            undoActions.Push(output_tb.Text);
        }
Здесь возвращаю текст при нажатии кнопки Undo
C#
1
2
3
4
5
6
7
8
9
        private void Undo_bt_Click(object sender, EventArgs e)
        {
            if (undoActions.Count<1)
            {
                return;
            }
 
            output_tb.Text = undoActions.Pop();
        }
Но прежнее состояние текста появляется только при втором нажатии на кнопку Undo. Почему так происходит?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.01.2017, 23:55
Ответы с готовыми решениями:

Сохранение текста (label.text или textBox.text) для повторного использования
В общем когда пользователь входит необходимо чтоб он авторизовался, а для того чтоб этого не делать 500 раз, нужно чтоб программа сохраняла...

TextBox.Text
Ребят,только начал изучение C# Не могу никак вывести это в TextBox. Напишите пожалуйста,как это вывести в TextBox. Пробовал следующим...

Вывод в textBox.Text
Добрый вечер, имею следующий кусок кода: private async void button1_Click(object sender, EventArgs e) { ...

2
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
29.01.2017, 10:09
Цитата Сообщение от TinkRE Посмотреть сообщение
Каким образом работает stack.pop() ?
Удаляет из стека и возвращает последний добавленный элемент.

Цитата Сообщение от TinkRE Посмотреть сообщение
прежнее состояние текста появляется только при втором нажатии на кнопку Undo. Почему так происходит?
Потому что каждый раз как текст изменится, вы добавляете новое значение в стек. Следовательно, верхний элемент стека всегда равен текущему тексту, прописанному в текстбоксе.
Если вы пишете в стек слово "Ёлка", то по мере набора в стеке будут следющие элементы:
Ё
Ёл
Ёлк
Ёлка
Когда вы нажимаете Undo, верхний элемент (Ёлка) удаляется из стека и вставляется в текстбокс, меняя текст "Ёлка" на текст "Ёлка".
0
0 / 0 / 2
Регистрация: 10.11.2016
Сообщений: 27
30.01.2017, 14:31  [ТС]
Я воспользовался List для простенького Undo для 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
using System.Collections.Generic;
 
namespace StringGenerator
{
    public interface IEdit
    {
        List<string> UndoActions { get; set; }
        List<string> RedoActions { get; set; }
        string Undo();
        string Redo();
    }
 
    public class Edit : IEdit
    {
        #region UndoRedo
        private List<string> undoActions = new List<string>();
        private List<string> redoActions = new List<string>();
        private string outputText = string.Empty;
 
        #region IEdit
        public List<string> UndoActions
        {
            get { return undoActions; }
            set { undoActions = value; }
        }
 
        public List<string> RedoActions
        {
            get { return redoActions; }
            set { redoActions = value; }
        }
        #endregion IEdit
 
 
        public string Undo()
        {
            if (undoActions.Count > 0)
            {
                redoActions.Add(undoActions[undoActions.Count - 1]);
                undoActions.RemoveAt(undoActions.Count - 1);
 
                if (undoActions.Count > 0)
                    outputText = undoActions[undoActions.Count - 1];
                else if (undoActions.Count == 0)
                    outputText = string.Empty;
            }
 
            return outputText;
        }
 
        public string Redo()
        {
            if (redoActions.Count > 0)
            {
                undoActions.Add(redoActions[redoActions.Count - 1]);
                outputText = redoActions[redoActions.Count - 1];
                redoActions.RemoveAt(redoActions.Count - 1);
            }
 
            return outputText;
        }
        #endregion UndoRedo
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.01.2017, 14:31
Помогаю со студенческими работами здесь

Сконвертировать Textbox.text в int
TextBox tbsalary = new TextBox(); tbsalary.Enabled = false; tbsalary.Name = &quot;textbox_Salaryy&quot;; ...

Проверка на символ в TextBox.Text
Здравствуйте, есть один вопрос. Пишу программу: Обмен валют. Проверяю чтобы в textbox не было букв и лишних символов, так вот в чем...

Задать свойство Text элемента TextBox
Начал писать программу калькулятор и на textBox1 должен показываться ноль но при textBox1.Text = textBox1.Text + &quot;1&quot;; получается...

Как проверить textBox.Text на пустоту?
private void button1_Click(object sender, EventArgs e) { if (textBox4.Text == &quot;&quot; &amp;&amp; textBox5.Text ==...

Ошибка при преобразовании textBox.Text в int
Суть программы в том, что вводится номер недели и выводится сообщение с названием этого дня. Программа работает, но если я хочу изменить...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
[В процессе разработки] SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru