Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
 Аватар для stels009
16 / 15 / 1
Регистрация: 05.04.2011
Сообщений: 426

Перевод сообщения между классом и формой

06.09.2013, 03:14. Показов 808. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привед.

Суть вопроса такова: у нас есть класс который находится в отдельном файле и из этого класса нужно вывести сообщение типа как это бы выглядело в консоли Console.Write("Бугага"), только в маем случае нужно вывести это сообщение не в консоль, а в richTextBox1 в форму как это можно реализовать?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.09.2013, 03:14
Ответы с готовыми решениями:

Обмен данными между формой и классом
Добрый день. Есть форма Window1 и класс Server. Я пишу в форме Server s = new Server(); и обращаюсь к методам класса. Но в классе...

Обмен данными между формой и классом
Добрый день! Я конечно понимаю, что вопрос очень простой, но сам я с ним разобраться не смог! Дело такое: есть у меня form1.cs и есть у...

Выбор между абстрактным классом, интерфейсом и простым классом
Здравствуйте. Помогите определиться, что следует выбрать в следующей ситуации, а главное почему следует выбирать именно это. ...

6
12 / 12 / 13
Регистрация: 06.03.2011
Сообщений: 166
06.09.2013, 03:58
Можна передать richTextBox1 конструктору класа, написать в класе метод Write(string someString) и использовать потом код напрмер:
C#
1
someObj.Write("то что нада вывести");
или если не толька для этого текстбокса будет использоватся можна зделать Write статичным и передавать текстбокс ему.

Пример: (клас)
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
    class Class1
    {
        RichTextBox usingTextBox;
        public Class1(RichTextBox someTextBox)
        {
            usingTextBox = someTextBox;
        }
 
        public void Write(string text)
        {
            usingTextBox.Text = text;
        }
    }
В основном:
C#
1
2
3
4
5
        private void Form1_Load(object sender, EventArgs e)
        {
            Class1 cls1 = new Class1(richTextBox1);
            cls1.Write("abc");
        }
0
52 / 45 / 4
Регистрация: 07.10.2010
Сообщений: 95
06.09.2013, 13:28
Правильный вариант
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
interface IForm1
{
    string RichTextBoxText { get; set; }
}
 
class Form1 : Form, IForm1
{
    public string RichTextBoxText
    {
        get
        {
            return (string)bindingSourceRichTextBox.DataSource;
        }
        set
        {
            bindingSourceRichTextBox.DataSource = value;
        }
    }
}
 
class Class1
{
    IForm1 View { get; set; }
    public Class1(IForm1 view)
    {
        View = view;
    }
 
    public void Write(string text)
    {
        View.RichTextBoxText = text;
    }
}
0
 Аватар для stels009
16 / 15 / 1
Регистрация: 05.04.2011
Сообщений: 426
06.09.2013, 17:08  [ТС]
Цитата Сообщение от serefa Посмотреть сообщение
bindingSourceRichTextBox.DataSource = value;
Что это у меня пишит не найдено в контексте.

P.S элемент куда надо вывести называется richTextBox1.text
0
 Аватар для Spectral-Owl
608 / 583 / 157
Регистрация: 29.06.2010
Сообщений: 1,620
06.09.2013, 17:28
V0vchik, serefa, это можно с тем, что если бы вам, к примеру, необходимо было получить долг от какой-либо сомнительной личности, вы ему отдали ключи от квартиры со словами: положешь на тумбочке.

похожая ситуация описывалась в теме Кнопка на форме WPF, изменить её Текст. Window на Form, button на richTextBox, и Content на Text заменить проблем, я думаю, не возникнет
0
52 / 45 / 4
Регистрация: 07.10.2010
Сообщений: 95
06.09.2013, 19:58
Нужно прочитать про биндинг данных.
Вкратце:
Добавляешь на форму bindingSourse. В его свойствах находишь DataSourse. Дальше Object и из списка выбираешь свой класс с данными, предварительно создав его. Что то типа :
C#
1
2
3
4
class MyEntity
{
     public string MyText {get;set;}
}
А дальше
C#
1
2
3
4
5
6
7
8
9
10
11
public string RichTextBoxText
    {
        get
        {
            return ((MyEntity)bindingSourceRichTextBox.DataSource).MyText ;
        }
        set
        {
            ((MyEntity)bindingSourceRichTextBox.DataSource).MyText = value;
        }
    }
Добавлено через 1 час 57 минут
Spectral-Owl
И ты почитай о биндинге и в частности о INotifyPropertyChanged. Ты выдумываешь велосипед, который уже существует в шарпе.
Я б мог просто реализовать этот интерфейс и передавать их в bindingSource. Получился бы твой вариант,
Но тогда были бы смешанны слои манипуляции данными и слой представления данных.
0
 Аватар для Spectral-Owl
608 / 583 / 157
Регистрация: 29.06.2010
Сообщений: 1,620
09.09.2013, 17:21
serefa, хм... что сказать, INotifyPropertyChanged, честно, не изучал, может и к лучшему (поискал пару статей):

http://dotnetways.com/hints/in... tychanged/
В принципе те-же стандартные события, которые описывал я, но для красного словца добавлены интерфейсы, которые нужны, похоже, только для самого упоминания их.

http://msdn.microsoft.com/ru-r... anged.aspx
мало того что пример не предназначен показать людям как начать работать с вышеупомянутым интерфейсом (на самом деле, столько всего лишнего, что создаётся впечатление что тема статьи "как замаскировать необходимый ручей информации в бурной реке"), так ещё и пример не работает с фреймворками ниже 4.5!

В общем у меня складывается вывод что биндинг и есть велосипед, наработанный над простыми событиями, а не наоборот.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.09.2013, 17:21
Помогаю со студенческими работами здесь

Организовать связь между собственным классом и классом SpriteABC
Здравствуйте. Подскажите, пожалуйста, как можно было бы организовать связь(?) между собственным классом и классом SpriteABC? Или...

Работа с классом и формой
Задача: Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Определить количество слов, которые 1|2. ...

Перевод программы из консоли в приложение с формой
Доброго времени суток. Попытался перевести проект в VCL. Получаю ошибки о выходе за диапазон массива. Помогите пожалуйста разобраться в...

Наследование между шаблоном и классом
Очень простоя идея 1. Я хочу реализовать наследование между тимплейтом ARRAY и классом PointArray 2. Тимплеей ARRAY родитель 3....

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 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-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru