Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по C#.doc
Скачиваний:
259
Добавлен:
08.11.2018
Размер:
5.81 Mб
Скачать

Чтобы выделить текст программными средствами:

  1. Присвойте свойству SelectionStart значение, соответствующее начальной позиции текста, который требуется выделить.

Значением свойства SelectionStart является число, определяющее положение курсора в текстовой строке, причем 0 указывает крайнюю левую позицию. Если значение свойства SelectionStart больше или равно числу знаков в текстовом поле, то курсор помещается за последним знаком.

  1. Присвойте свойству SelectionLength значение, равное длине текста, который требуется выделить.

Значением свойства SelectionLength является число, определяющее количество выделяемых знаков. Если значение SelectionLength больше нуля, то выделяется указанное количество знаков, начиная с текущей позиции курсора.

  1. Воспользуйтесь свойством 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 = "Вами была нажата кнопка Button10";

textBox1.Focus();

textBox1.SelectAll();

}

Очистка текстового поля

Чтобы очистить текстовое поле присвойте свойству Text элемента управления TextBox в качестве значения пустую строку, например:

textBox1.Text = "";

Многострочные элементы управления TextBox в Windows Forms

По умолчанию в элементе управления Windows Forms TextBox отображается одна строка текста без полос прокрутки. Если длина текста превышает размер доступного пространства, отображается лишь часть текста. Эту стандартную настройку можно изменить, присваивая соответствующие значения свойствам Multiline (многострочное текстовое поле), WordWrap (переход на новую строку при достижении границы текстового поля) и ScrollBars (наличие полос прокрутки). Свойство Multiline можно изменить в редакторе элемента управления TextBox. Открыть редактор можно щелкнув по символу треугольника в верхнем правом углу элемента управления TextBox.

Просмотр нескольких строк в элементе управления TextBox

  1. Установите для свойства Multiline значение true. Если свойство WordWrap имеет значение true (принимается по умолчанию), то текст в элементе управления будет отображаться в виде одного или нескольких абзацев; в противном случае он отображается в виде списка строк, причем некоторые строки могут быть обрезаны по краю элемента управления.

  2. Присвойте соответствующее значение свойству ScrollBars (наличие полос прокрутки).

  3. Присвойте соответствующее значение свойству WordWrap (способ переноса текста)

Значение

Описание

false

Текст в элементе управления не переносится автоматически; он прокручивается вправо, пока не будет достигнут конец строки. Это значение используется, если было выбрано отображение с горизонтальной полосой прокрутки (Horizontal) или с обеими полосами (Both).

true (по умолчанию)

Горизонтальная полоса прокрутки не отображается. Это значение используется, если для отображения одного или нескольких абзацев был выбран режим с вертикальными полосами прокрутки (Vertical) или без полос прокрутки (None).

Создание текстового поля, доступного только для чтения

Редактируемое текстовое поле Windows Forms можно сделать доступным только для чтения. Например, в текстовом поле могут отображаться данные, которые обычно допускают редактирование, но при определенном состоянии приложения оказываются недоступными для изменения.

Чтобы сделать текстовое поле доступным только для чтения необходимо присвоить свойству ReadOnly элемента управления TextBox значение true. Если это свойство имеет значение true, то пользователи могут прокручивать и выделять текст, но не изменять его. Команда Копировать в текстовом поле действует, а команды Вырезать и Вставить — нет. Изменить значение свойства ReadOnly можно как в конструкторе в окне Свойства, так и прописав в коде команду:

textBox1.ReadOnly = true;

Примечание. Свойство ReadOnly влияет только на взаимодействие с пользователем во время выполнения. Содержимое текстового поля может быть изменено программными средствами во время выполнения; для этого достаточно изменить значение свойства Text текстового поля.

Создание текстового поля для ввода пароля с помощью элемента управления TextBox

Поле пароля — это текстовое поле Windows Forms, в котором вместо вводимой пользователем строки текста отображаются знаки-заполнители.

Чтобы создать текстовое поле пароля

  1. Установите для свойства PasswordChar элемента управления TextBox определенный знак.

Свойство PasswordChar определяет знак, используемый в текстовом поле. Например, чтобы в поле пароля отображались звездочки, следует задать знак * в качестве значения свойства PasswordChar в окне Свойства. После этого, какие бы знаки пользователь ни вводил в текстовом поле, вместо них будут отображаться звездочки.

  1. (Не обязательно) Установите свойство 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 необходимо в обработчике соответствующего события прописать код, выполняющий:

    1. создание копии массива строк из многострочного текстового поля TextBox;

    2. вставку в копию массива новой строки;

    3. замену массива 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[] s = new String[2];

// Добавляем символы перехода на новую строку

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)

{ int n;

n = Convert.ToInt16(comboBox1.Text);

label1.Font = new Font("Microsoft Sans Serif", 8, FontStyle.Regular);

label1.Text = textBox1.Lines[n-1];

}