Студопедия Главная Случайная страница Задать вопрос

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Элементы управления CheckBox, CheckedListBox, ErrorProvider





CheckBox(флажок) - это небольшой прямоугольник, расположенный слева от текста. Однако если свойству Appearance задать значение Арреarance.Button (по умолчанию Appearance.Normal), элемент управления будет схож с кнопкой, за исключением того, что будет по щелчку «залипать» и «отлипать». Вид элемента управления CheckBox можно изменить, задав свойству CheckAlign значение из перечисления ContentAlignment. По умолчанию используется значение ContentAlignment.MiddleLeft, то есть флажок по вертикали выравнивается по оси текста и располагается слева от него.

Булево свойство Checked указывает текущее состояние флажка — «установлен» или «сброшен». Событие CheckedChanged информирует об изменении состояния.

По умолчанию значение AutoCheck равно true, то есть по команде с клавиатуры или по щелчку мыши кнопка автоматически изменяет свое состояние и инициирует событие CheckedChanged. Если отклик необходим при любом изменении состояния флажка (например, для активизации и отключения других элементов управления), установите обработчик события CheckedChanged. Если отклик для каждого изменения не нужен, обычно достаточно получить значение свойства Checked, когда пользователь щелчком кнопку ОК закрывает форму.

Свойству AutoCheck обычно задают false, когда планируют захватывать событие

Click и управлять установкой/сбросом флажка самостоятельно, задавая значение свойства Checked из программы. Такое изменение свойства Checked также инициирует событие CheckedChanged.

Иногда недостаточно одного состояния флажка — установленый или сброшенный, - требуется промежуточное состояние. Допустим, CheckBox управляет курсивным начертанием текста. Если в выбранном тексте есть и курсив, и обычный шрифт, CheckBox должен находиться в «неопределенном» состоянии (c другой стороны, если выбранный текст не может выделяться курсивом, CheckBox должен быть отключен).

Для использования этого третьего состояния, прежде всего, надо булеву свойству ThreeState присвоить значение true. Вместо свойства Checked нужно задействовать CheckState. Это значение из перечисления CheckState, состоящего из членов Unchecked, Checked и Indeterminate. Также, вместо установки обработчика CheckedChange, используют CheckStateChanged. Если вызвать метод EnableVisualStyles класса Application промежуточное состояние будет выглядеть как небольшой квадрат, в противном случае в элементе управления будет отображаться серый флажок.

Если AutoCheck равно true, по щелчку элемент управления будет по циклу менять свое состояние: «установлен-сброшен-неопределенный». Если необходим другой порядок, присвойте AutoCheck значение false и вручную закодируйте в обработчике события Click порядок смены значений CheckState.

CheckedListBox(Список с флажками) – используется при необходимости выбора нескольких элементов списка. В этом варианте слева от элементов расположены флажки; при этом интерфейсы взаимодействия с помощью клавиатуры и мыши проще и понятнее для пользователя, чем в списках с возможностью выбора нескольких элементов.

В списках с флажками SelectionMode может принимать только значение SelectionMode.One или SelectionMode.None (В последнем варианте поведение элемента

управления довольно неочевидно, поэтому его лучше не использовать.) В каждый момент

времени выбран и выделен цветом только один элемент, однако флажками могут быть отмечены несколько пунктов. Можно сделать так, чтобы флаговые окна выглядели «притопленными», задав свойству ThreeDCheckBoxes значение true.

Перемещение фокуса выполняется клавишами со стрелками, а пробел служит для переключения флажка.

Первый щелчок мыши выделяет элемент списка, а следующий - устанавливает флажок. При выборе другого элемента состояние флажка останется неизменным. Можно избавиться от необходимости два раза щелкать мышь, для этого нужно задать свойству CheckOnClick значение true. Теперь состояние флажка будет меняться одним щелчком.

Два прилагающихся к набору элементов метода Add позволяют при добавлении новых элементов автоматически устанавливать флажки. Состояние флажка определяется значением второго аргумента — true или false:

ckdlstbox.Add("New Jersey", true);

Для определения состояния элемента управления можно использовать встречавшееся ранее при описании элементов управления Checkbox перечисление CheckState, содержащее члены Checked, Unchecked или Indeterminate:

ckdlstbox.Add("New York", CheckState.Indeterminate);

Позже можно изменить состояние флажка, указав индекс элемента:

SetItemChecked(5, true)

Перечисление CheckState можно использовать при перегрузке метода:

SetItemCheckState(7, CheckState.Unchecked)

Свойства «только для чтения» CheckedIndices и CheckedItems предоставляют наборы целочисленных индексов или объекты, выбранные в данный момент. Чтобы получать информацию об изменении состояния флажка, нужно установить обработчик события ItemCheck в соответствии с делегатом ItemCheckEventHandler. Предоставляемый вместе с сообщением о событии объект ItemCbeckEventArgs содержит свойство Index элемента, а также значения CurrentValue и NewValue, выраженные членами перечисления CheckState.

ErrorProvider - невидимый элемент управления, который предоставляет удобный способ оповещения пользователей о допущенных ими ошибках ввода. Он позволяет задать для каждого элемента управления формы текст сообщения, отображаемого при вводе недопустимого значения. Если для элемента управления задан текст сообщения об ошибке, то при возникновении ошибки рядом с ним появится соответствующий значок, а если навести на него указатель мыши, отобразится всплывающая подсказка с заданным сообщением.

Компонент ErrorProvider не инициализирует какие-либо действия, поэтому должен быть вызван через другие обработчики событий в форме.

Рассмотрим пример, в котором на форме расположен элемент TextBox и обработчик события TextChanged для этого элемента управления. Когда обработчик события TextChanged срабатывает, мы проверяем, была ли введена цифра. Если нет, то активируем ошибку через ErrorProvider. В противном случае очищаем ErrorProvider:

private void textBox1_TextChanged(object sender, EventArgs e)

{

// Determine if the TextBox has a digit character.

string text = textBox1.Text;

bool hasDigit = false;

foreach (char letter in text)

{

if (char.IsDigit(letter))

{

hasDigit = true;

break;

}

}

// Call SetError or Clear on the ErrorProvider.

if (!hasDigit)

{

errorProvider1.SetError(textBox1, "Needs to contain a digit");

}

else

{

errorProvider1.Clear();

}

}

Для включения элемента ErrorProvider используется метдод SetError, в который первым параметром передается название проверяемого элемента управления и вторым параметром - сообщение об ошибке.

ErrorProvider имеет два свойства для отображения "мигания". В BlinkRate указывается количество миллисекунд для каждой из вспышек значка. BlinkStyle позволяет включить или отключить мигание в целом. Как правило, для простых пользовательских интерфейсов мигание ErrorProvider лучше отключать, т.к. его итак будет легко увидеть.

С помощью ErrorProvider можно предупреждать пользователя о наличии нескольких ошибок одновременно.

Строки

Все строки в C# являются объектами.

Для работы со строками в языке C# используются 2 класса: String, StringBuilder.

Особенности работы со строками типа String

1) Создание строк:

- присвоить переменной типа string строковый литерал:

string str = "С#-строки - это мощная сила."

- из массива типа char через конструктор класса String

char[ ] charray = {‘t’, 'e', 's', ‘t’} ;

string str = new string(charray) ;

- вызов метода ToString() для объекта и присваивания результата строковой переменной. Все встроенные типы переопределяют этот метод, чтобы упростить преобразование значения в его строковое представление:

int myString = 5;

string integerString = myInteger.ToString();

2) Особенности:

- Класс String включает свойство Length, которое содержит длину строки.

string myString = “hello world”;

Console.WriteLine(myString.Length); //11

- Чтобы получить значение отдельного символа строки, достаточно использовать индекс.

string str = "test";

Console.WriteLine(string[0]); //t

C помощью индекса нельзя присвоить символу внутри строки новое значение. Индекс можно использовать только для получения символа.

- Для сравнения строк используется оператор "==". В этом случае проверяется равенство содержимого двух строк. То же справедливо и в отношении оператора " !=". Что касается остальных операторов отношения (например, ">" или ">="), то они сравнивают ссылки так же, как и объекты других типов.

- С помощью оператора "+" можно конкатенировать (объединить) несколько строк.

string strl = "Один";

string str2 = "Два";

string str4 = strl + str2; // ОдинДва

- Подобно другим типам данных, строки могут быть собраны в массивы.

string[] str = { "Это", "очень", "простой", "тест." };

 

- Содержимое string-объектов неизменно. Другими словами, последовательность символов, составляющих строку, изменить нельзя. Если вам понадобится строка, которая должна представлять собой "вариацию на тему" уже существующей строки, создайте новую строку, которая содержит желаемые изменения. Неиспользуемые строковые объекты автоматически утилизируются системой сбора мусора. При этом необходимо понимать, что ссылочные переменные типа string могут менять объекты, на которые они ссылаются. А содержимое созданного string объекта изменить уже невозможно.

- Для управления switch-инструкциями можно использовать string-объекты, причем это единственный тип, который там допускается, помимо типа int .

- Строковые литералы в С# могут содержать различные управляющие последовательности, которые интерпретируются как определенный набор данных, предназначенных для отправки в выходной поток. Каждая управляющая последовательность начинается с обратной косой черты, за которой следует интерпретируемый знак (\n, \t, \a, \v, \\, \’, \” , \r).

- В С# вводится использование префикса @ для строк, которые требуется воспроизвести буквально. Используя буквальное воспроизведение строк, вы отключаете обработку управляющих символов строк. Это может быть полезным при работе со строками, представляющими каталоги и сетевые пути. Тогда вместо использования управляющих символов \\ можно использовать следующее

Console.WriteLine(@”C:\MyApp\bin\debug”);

Двойную кавычку в такой строковый литерал можно вставить с помощью дублирования знака “. Например:

Console.WriteLine(@ “Cerebus said ““Darrr!:”””);

3) Методы работы со строками:

Метод Назначение
Compare() Статический метод, который позволяет сравнить две строки
CompareTo(string str) Метод возвращает отрицательное значение, если вызывающая строка меньше строки str, положительное значение, если вызывающая строка больше строки str, и нуль, если сравниваемые строки равны
CompareOrdinal() То же, что Compare, но без учета локальных установок
Concat() Комбинирует отдельные экземпляры строк в одну строку (конкатенация)
Contains() Метод, который позволяет определить, содержится ли в строке определенная подстрока
Copy(string str) Метод возвращает копию строки str

 

Метод Назначение
СоруТо() Копирует определенное число символов, начиная с определенной позиции в новый экземпляр массива
Equals() Метод, который позволяет проверить, содержатся ли в двух строковых объектах идентичные символьные данные
Format() Статический метод, позволяющий сформатировать строку с использованием других элементарных типов данных (например, числовых данных или других строк) и обозначений типа {0}
IndexOf( string str) Находит первое вхождение заданной подстроки или символа в строке
IndexOfAny() Находит первое вхождение в строку любого символа из набора
Insert() Метод, который позволяет вставить строку внутрь другой определенной строки
Join() Строит новую строку, комбинируя содержимое массива строк
LastlndexOf( string str) То же, что IndexOf, но находит последнее вхождение
LastlndexOfAny() To же, что IndexOfAny, но находит последнее вхождение
PadLeft() PadRight() Методы, которые позволяют дополнить строку какими-то символами, соответственно, справа или слева
Remove() Replace() Методы, которые позволяют получить копию строки с соответствующими изменениями (удалением или заменой символов)
Split() Метод, возвращающий массив string с присутствующими в данном экземпляре подстроками внутри, которые отделяются друг от друга элементами из указанного массива char или string
Substring() Извлекает подстроку, начиная с определенной позиции строки
ToUpper () ToLower() Методы, которые позволяют создавать копию текущей строки в формате, соответственно, верхнего или нижнего регистра
Trim() Метод, который позволяет удалять все вхождения определенного набора символов с начала и конца текущей строки

 

Особенности работы со строками типа StringBuilder

Кроме строк типа string в языке C# существует ещё один вид строк — StringBuilder. Для символов, хранящихся в строках StringBuilder, также используется Unicode. Принципиальное отличие строки StringBuilder от строки string заключается в том, что элементы строки StringBuilder можно изменять напрямую, при этом такая строка заново не создаётся.

Класс работы со строками StringBuilder располагается в пространстве имен System.Text.

 

1) Создание строк

Для создания строки типа StringBuilder необходимо создать объект типа StringBuilder. Для этого существует несколько вариантов:

- Пустая строка:

StringBuilder sb = new StringBuilder();

- Строке можно задать начальную длину - здесь строке sb будет выделена память под n элементов:

int n = 50;

StringBuilder sb = new StringBuilder(n);

Этот вариант есть смысл использовать в том случае, когда заранее известна необходимая длина строки. В остальных случаях проще использовать первый вариант.

- Строка может получить начальное значение:

StringBuilder sb = new StringBuilder("qwerty");

2) Особенности

Класс StringBuilder имеет два главных свойства:

Length (длина), показывающее длину строки, содержащуюся в объекте в данный момент

Capacity (емкость), указывающее максимальную длину строки, которая может поместиться в выделенную для объекта память. При создании пустого объекта емкость строки устанавливается в 16 символов.

StringBuilder может удваивать свою емкость, когда происходит переполнение, а новое значение емкости не установлено явно.

При работе со строкой типа StringBuilder можно непосредственно обращаться к отдельным элементам этой строки, можно их изменять, при этом память для строки заново не выделяется.

3) Методы работы со строками типа StringBuilder:






Дата добавления: 2014-11-10; просмотров: 766. Нарушение авторских прав

Studopedia.info - Студопедия - 2014-2017 год . (0.016 сек.) русская версия | украинская версия