Чтобы выделить текст программными средствами:
Присвойте свойству SelectionStart значение, соответствующее начальной позиции текста, который требуется выделить.
Значением свойства SelectionStart является число, определяющее положение курсора в текстовой строке, причем 0 указывает крайнюю левую позицию. Если значение свойства SelectionStart больше или равно числу знаков в текстовом поле, то курсор помещается за последним знаком.
Присвойте свойству SelectionLength значение, равное длине текста, который требуется выделить.
Значением свойства SelectionLength является число, определяющее количество выделяемых знаков. Если значение SelectionLength больше нуля, то выделяется указанное количество знаков, начиная с текущей позиции курсора.
Воспользуйтесь свойством SelectedText для доступа к выделенному тексту.
Пример. Выделение содержимого текстового поля.
private void button10_Click(object sender, EventArgs e)
textBox1.SelectionStart = 0;
textBox1.SelectionLength = textBox1.Text.Length;
Пример. Перевод фокуса на текстовое поле, запись в него текста и выделение текста полностью.
private void button10_Click(object sender, EventArgs e)
textBox1.Text ;
textBox1.Focus();
textBox1.SelectAll();
Очистка текстового поля
Чтобы очистить текстовое поле присвойте свойству Text элемента управления TextBox в качестве значения пустую строку, например:
textBox1.Text = «»;
Многострочные элементы управления TextBox в Windows Forms
По умолчанию в элементе управления Windows Forms TextBox отображается одна строка текста без полос прокрутки. Если длина текста превышает размер доступного пространства, отображается лишь часть текста. Эту стандартную настройку можно изменить, присваивая соответствующие значения свойствам Multiline (многострочное текстовое поле), WordWrap (переход на новую строку при достижении границы текстового поля) и ScrollBars (наличие полос прокрутки). Свойство Multiline можно изменить в редакторе элемента управления TextBox. Открыть редактор можно щелкнув по символу треугольника в верхнем правом углу элемента управления TextBox.

Просмотр нескольких строк в элементе управления TextBox
Установите для свойства Multiline значение true. Если свойство WordWrap имеет значение true (принимается по умолчанию), то текст в элементе управления будет отображаться в виде одного или нескольких абзацев; в противном случае он отображается в виде списка строк, причем некоторые строки могут быть обрезаны по краю элемента управления.
Присвойте соответствующее значение свойству ScrollBars (наличие полос прокрутки).
Присвойте соответствующее значение свойству WordWrap (способ переноса текста)
Текст в элементе управления не переносится автоматически; он прокручивается вправо, пока не будет достигнут конец строки. Это значение используется, если было выбрано отображение с горизонтальной полосой прокрутки (Horizontal) или с обеими полосами (Both).
true (по умолчанию)
Горизонтальная полоса прокрутки не отображается. Это значение используется, если для отображения одного или нескольких абзацев был выбран режим с вертикальными полосами прокрутки (Vertical) или без полос прокрутки (None).
Создание текстового поля, доступного только для чтения
Редактируемое текстовое поле Windows Forms можно сделать доступным только для чтения. Например, в текстовом поле могут отображаться данные, которые обычно допускают редактирование, но при определенном состоянии приложения оказываются недоступными для изменения.
Чтобы сделать текстовое поле доступным только для чтения необходимо присвоить свойству ReadOnly элемента управления TextBox значение true. Если это свойство имеет значение true, то пользователи могут прокручивать и выделять текст, но не изменять его. Команда Копировать в текстовом поле действует, а команды Вырезать и Вставить — нет. Изменить значение свойства ReadOnly можно как в конструкторе в окне Свойства, так и прописав в коде команду:
textBox1.ReadOnly = true;
Примечание. Свойство ReadOnly влияет только на взаимодействие с пользователем во время выполнения. Содержимое текстового поля может быть изменено программными средствами во время выполнения; для этого достаточно изменить значение свойства Text текстового поля.
Создание текстового поля для ввода пароля с помощью элемента управления TextBox
Поле пароля — это текстовое поле Windows Forms, в котором вместо вводимой пользователем строки текста отображаются знаки-заполнители.
Чтобы создать текстовое поле пароля
Установите для свойства PasswordChar элемента управления TextBox определенный знак.
Свойство PasswordChar определяет знак, используемый в текстовом поле. Например, чтобы в поле пароля отображались звездочки, следует задать знак * в качестве значения свойства PasswordChar в окне Свойства. После этого, какие бы знаки пользователь ни вводил в текстовом поле, вместо них будут отображаться звездочки.
(Не обязательно) Установите свойство MaxLength. Это свойство определяет, сколько знаков может быть введено в текстовом поле. При превышении максимального количества раздается звуковой сигнал и ввод других знаков в текстовое поле становится невозможным.
Определение кода введенного символа
Для определения кода символа, стоящего в позиции i в строке s следует воспользоваться командой:
double x = Char.ConvertToUtf32(s,i);
где: string s – исходная строка; int i – номер позиции символа в строке s.
Печать символа по его коду
Для печати символа по его коду в кодировке Utf-32 следует воспользоваться командой:
string c = Char.ConvertFromUtf32(i);
где: string c – печатаемый символ; int i – код символа в системе Utf-32.
Добавление строки в текстовое поле
Чтобы добавить строку в многострочное текстовое поле TextBox необходимо в обработчике соответствующего события прописать код, выполняющий:
создание копии массива строк из многострочного текстового поля TextBox;
вставку в копию массива новой строки;
замену массива Lines текстового поля TextBox на видоизмененную копию.
Пример. На рисунке ниже показано начальное состояние элементов управления. Из поля TextBox1 по кнопке Добавить текст добавляется в многострочное поле TextBox2 в строку с номером выбранным в элементе управления СomboBox1. После добавления строки в элементе управления СomboBox1 добавляется в конец списка новый элемент, соответствующий числу строк в поле TextBox2. В исходном состоянии в элементе управления СomboBox1 четыре элемента (1,2,3,4). После добавления строки их становится пять (1,2,3,4,5) и т.д.

Для реализации этой задачи в обработчике события нажатия кнопки Добавить необходимо прописать код:
private void button1_Click(object sender, EventArgs e)
// Добавляем символы перехода на новую строку
string c1 = Char.ConvertFromUtf32(13);
string c2 = Char.ConvertFromUtf32(10);
// Создаем копию массива Lines поля textBox2
s = textBox2.Lines;
// Переводим строковое значение элемента ComboBox1 в целое
int n = Convert.ToInt16(comboBox1.Text);
// Вставляем строку в многострочное текстовое поле
s[n-1]=s[n-1].Insert(0,textBox1.Text+c1+c2);
// Записываем измененную копию обратно в поле
textBox2.Lines = s;
// Добавляем номер в список строк
comboBox1.Items.Add(textBox3.Lines.Count());
Чтение одной выбранной строки в текстовом поле
Чтобы считать строку с номером n из многострочного текстового поля TextBox необходимо в обработчике соответствующего события прописать код:
s= textBox1.Lines[n];
где: string s – переменная, в которую будет записана строка с номером n; int n – номер строки в многострочном текстовом поле TextBox.
Пример. Записать в элемент управления Надпись (Label1) строку из многострочного текстового поля TextBox1. Номер строке выбирается в элементе управления СomboBox1. Нумерация выбираемых строк в СomboBox1 должна начинаться с 1. Т.к. ни одна строка в начале работы программы еще не выбрана, то в элементе управления СomboBox1 отображается значение -1.

Код, прописанный в функции обработки события выбора номера строки в элементе управления СomboBox1:
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
Как считать текст из textbox c
Для ввода и редактирования текста предназначены текстовые поля — элемент TextBox. Так же как и у элемента Label текст элемента TextBox можно установить или получить с помощью свойства Text.
По умолчанию при переносе элемента с панели инструментов создается однострочное текстовое поле. Для отображения больших объемов информации в текстовом поле нужно использовать его свойства Multiline и ScrollBars . При установке для свойства Multiline значения true, все избыточные символы, которые выходят за границы поля, будут переноситься на новую строку.
Кроме того, можно сделать прокрутку текстового поля, установив для его свойства ScrollBars одно из значений:
None : без прокруток (по умолчанию)
Horizontal : создает горизонтальную прокрутку при длине строки, превышающей ширину текстового поля
Vertical : создает вертикальную прокрутку, если строки не помещаются в текстовом поле
Both : создает вертикальную и горизонтальную прокрутку
Автозаполнение текстового поля
Элемент TextBox обладает достаточными возможностями для создания автозаполняемого поля. Для этого нам надо привязать свойство AutoCompleteCustomSource элемента TextBox к некоторой коллекции, из которой берутся данные для заполнения поля.
Итак, добавим на форму текстовое поле и пропишем в код события загрузки следующие строки:

Режим автодополнения, представленный свойством AutoCompleteMode , имеет несколько возможных значений:
None : отсутствие автодополнения
Suggest : предлагает варианты для ввода, но не дополняет
Append : дополняет введенное значение до строки из списка, но не предлагает варианты для выбора
SuggestAppend : одновременно и предлагает варианты для автодополнения, и дополняет введенное пользователем значение
Перенос по словам
Чтобы текст в элементе TextBox переносился по словам, надо установить свойство WordWrap равным true . То есть если одно слово не умещается на строке, то но переносится на следующую. Данное свойство будет работать только для многострочных текстовых полей.
Ввод пароля
Также данный элемент имеет свойства, которые позволяют сделать из него поле для ввода пароля. Так, для этого надо использовать PasswordChar и UseSystemPasswordChar .
Свойство PasswordChar по умолчанию не имеет значение, если мы установим в качестве него какой-нибудь символ, то этот символ будут отображаться при вводе любых символов в текстовое поле.
Свойство UseSystemPasswordChar имеет похожее действие. Если мы установим его значение в true , то вместо введенных символов в текстовом поле будет отображаться знак пароля, принятый в системе, например, точка.
Событие TextChanged
Из всех событий элемента TextBox следует отметить событие TextChanged , которое срабатывает при изменении текста в элементе. Например, поместим на форму кроме текстового поля метку и сделаем так, чтобы при изменении текста в текстовом поле также менялся текст на метке:
Глава 5. Вывод текстовой информации
Параграф 1. Вывод текстовой информации в контрол Label
Для вывода текстовой информации наиболее часто применяются контролы Label и TextBox, которые мы уже использовали в параграфе «Простейший Windows Application проект». Контрол TLabel предназначен для вывода однострочной текстовой информаци и имеет стандартный набор свойств и методов, большинство из которых прозрачны или описаны в предыдущих параграфах.
Отметим, что в контрол можно помещать не только текст, но, чего нет в Delphi и Borland C++ Builder, и рисунки, аналогично, как это мы делалали для кнопок — он имеет такойже набор свойств(Image, ImageAlign, ImageList).
Интересным является свойство UseMnemonic, позволяющее определить, как будет интерпретироваться символ амперсанда (&), размещенный в свойстве Text. Если установлено значение True, то амперсанд из текста удаляется, а символ, перед которым он расположен, подчеркивается. Эта возможность применяется для определения клавиш быстрого доступа для выбора именно контрола Label — пользователь может комбинацией клавиш <А1t>+<подчеркнутая клавиша в метке> устанавливать фокус на контрол, а затем, используя клавишу Tab, на контрол, следующий по таб номеру за контролом Label. Например, если в форме расположено несколько контролов, среди которых имеется текстовое поле, в которое необходимо перейти нажатием клавиши быстрого доступа, то достаточно установить свойства Tabindex метки и текстового поля так, чтобы для метки это значение было на единицу меньшее, чем у текстового поля. Теперь, в программе, Вы можете выбрать клавишами быстрого доступа метку и, далее, нажать клавишу Tab — будет выбрано текстовое поле для ввода информации.
Вывод текста в контрол не вызывает трудностей, для этого контрол имеет свойство Text:
Параграф 2. Вывод текстовой информации в контрол TextBox
2.1. Основные свойства TextBox
Контрол TextBox мы пока использовали для ввода и вывода однострочного текста, однако он болле предназначен именно для ввода и вывода многострочного текста. Для этого у него есть свойство Multiline, которое должно быть установлено в True.
Cвойства AcceptsTab и AcceptsReturn определяют действие при нажатии клавиш Tab и Enter, при False (по умолчанию) и при нажатии Tab или Enter осуществляется переход фокуса к следующему по TabIndex контролу, при True — клавиши выполняют основное свое назначение — вставка разрыва табуляции и перевод строки соответственно.
Cвойство AutoSize определяет, нужно ли автоматически изменять размеры конрола, чтобы в нем можно было разместить его содержимое.
Свойство CharacterCasing определяет регистр в котором будут отображаться техт в контроле.
Свойство HideSelection целесообразно установить в False — в противном случае выделенный программно текст не будет отображаться.
Свойство Locked определяет может ли пользователь изменять свойства TextBox программно.
Свойство ScrollBars показывает положение полос прокрутки — при Both полоса прокрутки появляется при выходе текста за соответствующую границу.
Свойство PasswordChar (работает только при Multiline=false) не дает возможности просматривать вводимые символы, заменяя их на привычные для ввода пароля звездочки или другой символ, указанный в этом поле.
Свойство WordWrap при True разрешает перенос текста на новую строку при ширене строки текста более ширины окна.
2.2. Программный вывод текста в TextBox
Создадим проект решения для вывода текстовой информации с контролом TrxtBox, показанный на Рис.1.
Рис.1. Проект решения для вывода текстовой информации
Создание кнопочной панели, меню и панели статуса уже рассмотрены в предыдущих параграфах раздела, поэтому здесь приводятся лиш коды обработчиков событий для кнопок. У кнопок установлено свойство Tag соответственно в 1, 2 и 3 и события MouseHover и MouseLeave для всех кнопок замкнуты на toolStripButton1_MouseHover и toolStripButton1_MouseLeave. Для вывода подсказок использован контрол toolStrip, а для вывода подсказок в панель статуса StatusStrip и соответствующий код (все тонкости описаны в предыдущих параграфах).
Прежде чем выводить текст программно, нажмем кнопочку с тремя точками в свойстве Lines (вызов String Coleection Editor) и выведем несколько строк текста с клавиатуры. После нажатия кнопочки OK видим, что текст появился в окне контрола и в свойстве Text. Это говорит о том, что текст можно выводить как в свойство Text, так и использовать свойство Lines (String[] Array). Обратим внимание, что в свойстве Text присутствуют два нечитаемых символа — это \r и \n — перевод строки и возврат каретки. К сожалению, из за этого, придется при редактировани текста учитывать наличие этих символов. У свойства Lines нет методов Add и Delete для строк, что также создает дополнительные трудности при редактировании текста.
Перед началом манипулирования с текстом определим статическую переменную viNom в декларационной части кода:
Следующие коды обработчиков событий нажатия для кнопок показывают возможности редактирования многострочного текста. Раскоментируйте интересующий Вас способ.
Нажимаем F5 и можем добавлять и удалять строки в TextBox.
Рис.2. Демонстрация добавления и удаления строк
Удалять строки можно и так (ровно как добавлять и вставлять):
Параграф 3. Ввод/Вывод текстовой информации в контрол TextBox из/в файл(а)
3.1. Классы для работы с текстовыми файлами
Для работы с текстовыми файлами удобно использовать потоки и класс потоков, наследника класса Stream — Класс FileStream.
Класс FileStream используется для чтения и записи файлов. Его можно использовать для чтения и записи байтов, символов, строк и других типов данных. Класс FileStream поддерживает синхронное и асинхронное открытие файлов, синхронные операции чтения и записи (методы Read и Write), а также асинхронные операции чтения и записи (методы BeginRead и BeginWrite). Асинхронные операции завершаются вызовом методов EndRead и EndWrite соответственно. Режим по умолчанию — синхронный. Для проверки режима используемтсясвойство класса IsAsync. Для асинхронных операций необходим объект WaitHandle. Метод Seek используется для произвольного доступа к файлам. Свойство Position позволяет нам узнать или установить текущую позицию в потоке. Методы Lock и Unlock служат для предотвращения доступа ко всему файлу или к его части, а также для отмены ранее установленного запрета доступа. Свойство Length возвращает длину потока в байтах, а метод SetLength служит для задания длины потока. Методы ReadByte и WriteByte используются для чтения и записи одного байта. Для других примитивных типов необходимы классы BinaryReader и BinaryWriter соответственно.
Удобно использовать для работы с текстовыми файлами в дополнение к классу FileStream классы TextReader, TextWriter StreamReader, StreamWriter, StringReader и StringWriter.
Класс TextReader используется для чтения последовательности символов из ассоциированного потока. Этот класс служит основой для двух других классов: StreamReader и StringReader.
Peek() — возвращает следующий символ из потока, но не перемещает указатель текущей позиции;
Read() или Read(Char(), Integer, Integer) — метод применяется для чтения указанного числа символов из потока;
ReadBlock(Char(), Integer, Integer) — метод считывает указанное число символов в буфер;
ReadLine() — считывает строку символов из потока;
Класс TextWriter служит для записи последовательности символов в поток.
Класс StreamReader применяется для чтения последовательности символов из файла или другого потока. Его можно использовать для чтения текстового файла построчно и как одну строку.
Класс StringReader позволяет выполнить чтение символов из строк. StreamReader и StringReader для чтения строки из текстового файла и чтения символов из этой строки как из потока:
Класс StreamWriter применяется для вывода последовательности символов в той или иной кодировке. По умолчанию используется экземпляр класса UTF8Encoding для записи символов в кодировке Unicode UTF-8. Существует несколько перегруженных конструкторов, позволяющих указать поток, кодировку по умолчанию, задать кодировку, размер буфера и тип операции: требуется перезаписать существующий файл или информация должна быть к нему добавлена. Свойство Flush служит для указания, следует ли записывать содержимое буфера в поток после каждого вызова методов Write и WriteLine.
Класс StringWriter используется для записи строки, которая хранится в классе StringBuilder, реализованном в пространстве имен System.Text.
3.2. Ввод/Вывод текстовой информации
Покажем возможные способы использования перечисленных классов для ввода и вывода информации в TextBox.
Используем для реализации проект решения из предыдущего параграфа. Для чего уберем имеющийся код из обработчиков toolStripButton1_Click и toolStripButton2_Click. При желании можем изменить тексты подсказок и картинки для button1 и button2 и заглавие проекта.
В обработчики нажатия кнопок toolStripButton2_Click и toolStripButton2_Click запишем следующий код:
Проверим в заголовке наличие кода using System.IO; :
После выполнения программы введенный в контрол TextBox текст будет записан в файл по нажатию toolStripButton1_Click и добавлен к введенному из файла по нажатию toolStripButton2_Click.
Следующий код (изменим обработчик для кнопки 2) позволяет вывести текст по линиям. На этом принципе может быть также основан вывод конкретной строки текста.
Когда необходимо чтение всего текста, то код можно упростить.
Изменим теперь обработчик для кнопки 1
Теперь при запуске прграммы мы можем ввести какой либо текст в TextBox и, далее, после нажатия последовательно кнопок 1 и 2 его вывести c заголовком («My Strings!!»). Этот код показывает как можно добавлять строки в текстовый файл.
Добавим в заголовок решения строку:
Изменим текст обработчика кнопки 1 для вывода чисел в текстовый файл:
Результат после последовательного нажатия кнопок 1 и 2:
Параграф 4. Вывод текстовой информации в контрол RichTextBox
4.1. Основные свойства RichTextBox
Вначале изменим предыдущее решение удалив коды обработчиков событий нажатия Button1 и Button2, удалим контрол TextBox и на его место поместим контрол RichTextBox. Рассмотрим его свойство на страничке Properties. Большинство свойст аналогичны описанным ранее для уже рассмотренных контролов. Рассмотрим те свойства, которых не было у уже использованных нами контролов.
Свойство AcceptButton позволяет закрепить кнопку, клик которой будет выполняться при нажатии Enter когда RichTextBox в фокусе (например после ввода).
WordSelection если свойство true, пользователь может, двойным щелчком на любой части слова в контроле сделать его выделенным.
BulletIndent и SelectionBullet — BulletIndent определяет отступ в пикселях текста перечислений (пунктов списка) от иконки соответствующей пункту списка при значении свойства SelectionBullet=true.
Пример из Help С#:
Рис.3. Свойства SelectionBullet и BulletIndent.
Свойство DetectUrls позволяет распозновать и выделять интернетовские ссылки и запускать браузер по этой ссылке при наличии в решении кода обработчика события LinkClicked следующего вида (Рис.4.):
Рис.4. Использование свойства DetectUrls
Свойство ZoomFactor позволяет одновременно изменять масштаб вывода текста в RichTextBox в пределах значений 0.64 — 64.0.
Свойство Ime Mode задает или возвращает состояние IME (Input Method Editor — IME — редактор способа ввода). Вместе со свойством RightToLeft определяют направление текста и способ его редактирования (свойства не актуальны для европейских языков, в том числе и для русского) — более необходимы при вводах иероглифических текстов на китайском, арабском, корейском и японском языках (при соответствующих Windows).
Значение по умолчанию NoControl.
Все остальные свойства richTextBox повторяют свойства TextBox.
4.2. Программный вывод текста в RichTextBox
В начале параграфа мы поместили контрол RichTextBox на форму.
Все свойства контрола пока оставим принятые по умолчанию. Свойства остальных контролов оставим без изменения — проект решения выглядит аналогично показанному на Рис.1. При удалении контрола требуется только удалить коды обработчиков нажатия кнопок 1 и 2.
Так как свойство Lines у RichTextBox и TextBox, то следует предположить, что ввод и вывод информации в контрол ничем не отличимы в обоих контролах — достаточно заменить имена, как показано далее в обработчиках toolStripButton1_Click и toolStripButton2_Click.
Коды обсолютно одинаковы и работают аналогично (Рис.2.). Все отличие контролов в формате текста .rtf и .txt. RichTextBox, как мы это видели при описании свойств контрола, позволяет менять шрифты, и характеристики шрифтов, отступы, использовать интернет ссылки и т.п.
Но прежде чем перейти к рассмотрению всех этих возможностей приведем еще один код (подходит и для работы с TextBox), который позволяет удалять строки несколько иначе и показывает, что с RichTextBox это, в отношении хранения информации — такойже массив как и string[]:
4.3. Использование шрифтов в RichTextBox
Изменим обработчик для кнопки 1 так, чтобы выводимые строки меняли свой шрифт при выводе очередной строки.
Результат выполнения кода представлен на Рис.4.
Рис.5. Задание параметров шрифтов для строк
Обратм внимание, что любая попытка добавить текcт обычным образом приведет у тому, что весь текст отобразится шрифтом, установленным в свойстве Font RichTextEdit.
В приведенном выше коде показно как добавить составляющую в стиль шрифта. Но соствляющие можно также и убирать. Добавим в конец предыдущего кода фрагмент:
Результат — перечеркивания в пятой строке исчезло.
4.4. Работа со строками в RichTextBox
В предыдущем решении мы получили пятистрочный текст, который хорошо подходит для показа того, как можно менять местами, добавлять и удалять строки. Будем добавлять в обработчик нажатия кнопки 1 дополнительные фрагменты, на которых и рассмотрим работу со строками.
Отметим сразу, что привычных для программистов методов, напрямую добавляющих, удаляющих или вставляющех строки в C# для RichEditBox, ровно как и для TextBox, нет. Как результат приходится работать через Clipboard. (Наличие метода Insert у свойства Text пусть никого не обольщает, его малая результативность будет показана чуть ниже).
Изменим код в обработчике toolStripButton1_Click:
Результат видим на Рис.6.(слева).
Если вместо строчки кода
Или вообще ее убрать, то строка 5 заместит строку 2 (Рис.6. справа).
Рис.6. Манипулирование строками в RichTextBox
Теперь о методе Insert. Рассмотрим фрагмент кода, который добавим в конец фрагмента кода, где мы экспирементировали со шрифтами:
Все хорошо (Рис.7.) — строки поменяльсь местами и вставлена строка в нулевую позицию, но все форматирование исчезло. Причина — Text и отформатированный текст не одно и тоже. Текст хранится в свойстве Lines по строчно и в свойстве текст одной строкой, а отформатированный и отображаемый текст в формате Rtf в свойстве SelectedRtf.
Рис.7. Манипулирование строками в RichTextBox
Нетрудно посмотреть причину этого — достаточно добавить перед последнем вставленным фрагментом и в конце его код:
и посмотреть результат в окне отладчика и сравнить коды (меню View/Output).
Зная формат нетрудно найти все, что было введено при форматировании и потерялось при присвоении.
Можно попробовать осуществить манипуляцию строками через посредника, например richTextBox2.
Однако и это ничего хорошего не дает — при присвоении теряются форматы всех строк кроме первой, который становится форматом всего текста.
4.5. Файловый ввод/вывод RichTextBox
Рассмотрим фрагмент кода, который, как и прежде, поместим в конец кода обработчика toolStripButton3_Click:
При запуске текст пишется из контрола в файл и читается из него в контрол благодаря наличию методов SaveFile и LoadFile. Причем формат тексты сохраняется.
Как и большинства функций C# функции SaveFile и LoadFile перегружаемые и можно напрямую указать формат текста, например:
C #, получить доступ (получить или прочитать) значения textBox в статическом методе?
как я могу прочитать значение textBox1 в методе getValue () ??
все программное обеспечение построено в этой структуре, поэтому я надеюсь, что в C # есть какой-то стандартный способ получить эти значения в методе getValue ()
4 ответы
Вы должны создать экземпляр нового объекта Form1 и получить значение. Или же добавьте делегата в form1 и вызовите его из getValue, чтобы возвращаемое значение делегата было значением текстового поля.
ответ дан 12 авг.

любой пример? это поможет мне лучше узнать и понять это! и эта структура у меня неправильная? — База данных
Хорошо, если вы создаете экземпляр Form1 в методе getValue, тогда будут созданы новые объекты Form и новый объект TextBox будет создан в мемориале. Так что это не решит для вас всю проблему. Другим способом является определение делегата в form1, который, очевидно, является статическим объектом в form1. Затем в этом делегате при вызове из getValues для получения значения TextBox заставить его возвращать значение из form1. Ищите делегата, вы получите ответ. — Зенуокер
Спасибо большое, я попробую, я никогда не делал этого раньше, наверное 🙂 — База данных
Ты не можешь. Свойство находится в экземпляре класса, статический метод не имеет на него указателя. Сломано по дизайну.