Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.82/270: Рейтинг темы: голосов - 270, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 21.04.2011
Сообщений: 7
.NET 3.x

Как добавить текст в TextBox

05.05.2011, 11:10. Показов 57811. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вопрос: Создал многопоточный TCP Server который поддерживает асинхронные коммуникации. У меня есть некая форма (Windows Form) и там есть TextBox со свойством ReadOnly куда должно автоматически добавляться соответствующие тексты при подключении клиента на сервер, при отправлении файла на клиент и т.д. То есть этот TextBox должен стать журналом событий. Как мне это сделать?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.05.2011, 11:10
Ответы с готовыми решениями:

Как добавить текст в textbox с клавиатуры?
Как добавить текст в textbox с клавиатуры ...Я думаю что для этого мне нужны будут две формы..

Текст из textbox добавить в ListBox
Текст из textbox Не могли бы Вы (форумчане) помочь: как из textbox достать текст которыйы ты набираешь и засунуть в listbox? (набрал...

Как можно поменять текст в узлах в treeview на текст который в textbox
Добрый вечер! Помогите с кодом, как можно поменять текст в узлах в treeview на текст который в textbox. Заранее спасибо!

20
64 / 64 / 10
Регистрация: 27.01.2011
Сообщений: 250
05.05.2011, 11:11
А почему текстБукс для журнала? не лучшели использовать накройняк ричбукс или лист букс
0
0 / 0 / 0
Регистрация: 21.04.2011
Сообщений: 7
05.05.2011, 11:13  [ТС]
Цитата Сообщение от Lavios Посмотреть сообщение
А почему текстБукс для журнала? не лучшели использовать накройняк ричбукс или лист букс
Ну не знаю. Просто в голову сразу пришел TextBox.
0
4 / 4 / 0
Регистрация: 31.01.2010
Сообщений: 27
05.05.2011, 11:14
Установить модификатор доступа текстбокса в public. Далее в интересующих местах кода
C#
1
textBox1.Text += "Клиент такой-то прибыл в сектор";
0
64 / 64 / 10
Регистрация: 27.01.2011
Сообщений: 250
05.05.2011, 11:15
ну собственно ты не знаешь как добавить в textbox текст чтоли? Textbox.Text = "...", или TextBox.Text+= "..."(тогда не удалит предыдущее).
0
0 / 0 / 0
Регистрация: 21.04.2011
Сообщений: 7
05.05.2011, 11:16  [ТС]
Цитата Сообщение от Прайм Посмотреть сообщение
Установить модификатор доступа текстбокса в public. Далее в интересующих местах кода
C#
1
textBox1.Text += "Клиент такой-то прибыл в сектор";
а не лучше ли использовать метод AppendText?
0
 Аватар для Alex_Sabaka
638 / 499 / 77
Регистрация: 28.07.2010
Сообщений: 895
05.05.2011, 11:18
Топикстартер как-бы сказал что у него многопоточный сервер, а
этот
Цитата Сообщение от Прайм Посмотреть сообщение
C#
1
textBox1.Text += "Клиент такой-то прибыл в сектор";
вариант приведет к вылету программы, поэтому нужно использовать Control.Invoke
1
4 / 4 / 0
Регистрация: 31.01.2010
Сообщений: 27
05.05.2011, 11:19
Цитата Сообщение от Alex Sabaka Посмотреть сообщение
Топикстартер как-бы сказал что у него многопоточный сервер, а
вариант приведет к вылету программы, поэтому нужно использовать Control.Invoke
О как. А можно узнать, почему возможен вылет?
0
0 / 0 / 0
Регистрация: 21.04.2011
Сообщений: 7
05.05.2011, 11:20  [ТС]
Цитата Сообщение от Alex Sabaka Посмотреть сообщение
Топикстартер как-бы сказал что у него многопоточный сервер, а
вариант приведет к вылету программы, поэтому нужно использовать Control.Invoke
то есть?
0
64 / 64 / 10
Регистрация: 27.01.2011
Сообщений: 250
05.05.2011, 11:21
Цитата Сообщение от Abdussamed Посмотреть сообщение
то есть?
Т.е. в многопоточном приложении нельзя напрямую обратится к контролу...
0
0 / 0 / 0
Регистрация: 21.04.2011
Сообщений: 7
05.05.2011, 11:24  [ТС]
Цитата Сообщение от Lavios Посмотреть сообщение
Т.е. в многопоточном приложении нельзя напрямую обратится к контролу...
Это я понял. Просто конкретно как это сделать? Я вообще то начинающий, поэтому опыта мало. Если объясните все подробно буду вам благодарен.
0
64 / 64 / 10
Регистрация: 27.01.2011
Сообщений: 250
05.05.2011, 11:24
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
delegate void SetTextCallback(string text);
 private void SetText(string text)
        {
            if (this.textBox1.InvokeRequired)
            {
                
                SetTextCallback d = new SetTextCallback(SetText);
                this.Invoke(d, new object[] { text });
            }
            else
            {
                this.textBox1.Text = text;
            }
        }
 
void changetext()
        {
            this.SetText("Твой текст");
        }
2
4 / 4 / 0
Регистрация: 31.01.2010
Сообщений: 27
05.05.2011, 11:24
Цитата Сообщение от Lavios Посмотреть сообщение
Т.е. в многопоточном приложении нельзя напрямую обратится к контролу...
При установке
этого флага
C#
1
System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;
можно. Но, возможно, не очень правильно.
0
05.05.2011, 11:26

Не по теме:

Цитата Сообщение от Abdussamed Посмотреть сообщение
Создал многопоточный TCP Server который поддерживает асинхронные коммуникации
Цитата Сообщение от Abdussamed Посмотреть сообщение
Я вообще то начинающий
О_опочувствовал себя полным нубом и неудачником...:cry::wall:

1
0 / 0 / 0
Регистрация: 21.04.2011
Сообщений: 7
05.05.2011, 11:33  [ТС]
Цитата Сообщение от znake Посмотреть сообщение

Не по теме:



О_опочувствовал себя полным нубом и неудачником...:cry::wall:

У меня рецепт был и работал на основе этого рецепта.

Добавлено через 4 минуты
Цитата Сообщение от Lavios Посмотреть сообщение
C#
1
2
3
4
void changetext()
        {
            this.SetText("Твой текст");
        }
и вот это надо повторить каждый раз?
0
64 / 64 / 10
Регистрация: 27.01.2011
Сообщений: 250
05.05.2011, 11:38
C#
1
this.SetText("Твой текст");
это в методе где тебе надо...

Добавлено через 1 минуту
C#
1
2
void changetext(){
}
это не надо=) или наоборот сделай эту функцию принимающую аргумент текс, и вызывай ее каждый раз передавая нужную строчку
1
0 / 0 / 0
Регистрация: 21.04.2011
Сообщений: 7
05.05.2011, 11:46  [ТС]
Цитата Сообщение от Lavios Посмотреть сообщение
C#
1
this.SetText("Твой текст");
это в методе где тебе надо...
а у меня эти методы статические :black_eye.:
0
64 / 64 / 10
Регистрация: 27.01.2011
Сообщений: 250
05.05.2011, 17:53
Цитата Сообщение от Abdussamed Посмотреть сообщение
а у меня эти методы статические :black_eye.:
И что?!
0
192 / 199 / 82
Регистрация: 11.04.2013
Сообщений: 1,086
12.04.2013, 08:44
Цитата Сообщение от Lavios Посмотреть сообщение
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
delegate void SetTextCallback(string text);
 
delegate void SetTextCallback(string text);
 
 private void SetText(string text)
        {
            if (this.textBox1.InvokeRequired)
            {
                
                SetTextCallback d = new SetTextCallback(SetText);
                this.Invoke(d, new object[] { text });
            }
            else
            {
                this.textBox1.Text = text;
            }
        }
 
void changetext()
        {
            this.SetText("Твой текст");
        }
Можно пару вопросов ибо тоже пробую написать серверное приложение

1. как я понимаю этот метод затрет предыдущий текст который был в текстбоксе , а как добавить?

2. Можно ли написать универсальный метод который бы возвращал return string str, что бы использовать так

в методах контролов textBox1.Text = str , а не писать под каждый контрол нового делегата ?

3. Объясните по простому как сделать обработчик события string ServerLog=String.Empty; Если переменная ServerLog (которую достаем из потока ) стала не пустой добавляем текст из переменой в текстбокс
0
713 / 680 / 126
Регистрация: 30.03.2012
Сообщений: 1,124
12.04.2013, 09:26
1) добавить - аналогично
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
namespace ControlExtension
{
    public static class ControlExtenstionMethods
    {
        public static void AddTextCrossThread(this Control control, string text)
        {
            if (control.InvokeRequired)
                control.Invoke(new Action<string>((s) => control.Text += s), text);
            else
                control.Text += text;
        }
    }
}
2) вам не поможет метод который будет возвращать строку т.к. вы не сможете ее так просто присвоить как вы пишете
C#
1
new Thread(() => { textBox1.AddTextCrossThread("123"); button1.AddTextCrossThread("321"); }).Start();
3) создайте событие об изменении серверной строки на любую непустую строку и подписывайтесь на него где захотите
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
        private string serverLog;
        public string ServerLog
        {
            get
            {
                return serverLog;
            }
            set
            {
                serverLog = value;
                if (value!=String.Empty&&ServerLogChanged!=null)
                    ServerLogChanged(this, new EventArgs());
            }
        }
        public event EventHandler ServerLogChanged;
C#
1
server.ServerLogChanged +=(o,a)=> textBox1.AddTextCrossThread(server.ServerLog);
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.04.2013, 09:26
Помогаю со студенческими работами здесь

Как добавить TextBox в GroupBox?
Доброго времени суток уважаемые программисты ) Наткнулся на проблему. Нужно написать программу: В этой программе дожно быть две кнопки...

Как добавить данные из textbox в dataGridView?
Помогите пожалуйста!!! Не могу добавить данные из textbox в dataGrilView.. Выдает ошибку: &quot;Строки нельзя программным способом добавить...

Как добавить данные из textbox в datagridview?
Добрый вечер.Как добавить данные из textbox и dateTimePicker в datagridview c#.База в Access.Помогите пожалуйста)

Как добавить слово из textBox в listBox?
Уважаемые форумчане! Такой вопрос! Есть listbox, есть textbox, под текстбоксом есть кнопка add. Так вот, помогите с кодом, который...

Как можно добавить строки по порядку в textbox?
Ситуация такая..Надо в richtextbox добавить не пустую текстовую строку textbox. Допустим, с названием &quot;Добавлена строка1&quot; так...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
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
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru