Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

lec

.pdf
Скачиваний:
51
Добавлен:
24.03.2015
Размер:
3 Мб
Скачать
☆

this.domainUpDown1.Items.Add (" Элемент-1"); this.domainUpDown1.Items.Add (" Элемент-2"); this.domainUpDown1.Items.Add (" Элемент-3"); this.domainUpDown1.Name = "domainUpDown1"; this.domainUpDown1.Text = " Элемент-1";

this.domainUpDown1.TabIndex = 0;

this.domainUpDown1.Location = new System.Drawing.Point (96, 48);

Другие возможности:

Сортировка коллекции объектов может быть выполнена по алфавиту, если свойству Sorted задать значение true.

Когда Wrap имеет значение true, то список будет закольцованным (то есть при прокрутке последнего или первого объекта в коллекции просмотр списка начнется повторно с первого или последнего объекта соответственно).

Для отображения объекта в элементе управления «вверх/вниз» вызывается метод ToString() этого объекта.

Пример: public class UDC

{

int a, b;

public UDC (int A, int B) { a=A; b=B;}

public override string ToString() { return " " + a + "+" + b; }

}

рис.16

UDC udc;

DomainUpDown domainUpDown1 ; // . . .

private void InitializeComponent()

{

domainUpDown1 = new DomainUpDown(); SuspendLayout();

//

// domainUpDown1

//

331

udc = new UDC(0, 10); domainUpDown1.Items.Add (udc);

udc = new UDC(1, 11); domainUpDown1.Items.Add (udc);

udc = new UDC(2, 12); domainUpDown1.Items.Add (udc);

udc = new UDC(3, 13); domainUpDown1.Items.Add (udc);

domainUpDown1.Location = new System.Drawing.Point(96, 48); domainUpDown1.Name = "domainUpDown1"; domainUpDown1.TabIndex = 0;

domainUpDown1.Text = " Элемент-1";

//

//Form1

//. . .

При вызове методов UpButton (отображает предыдущий элемент в коллекции) или DownButton (отображает следующий элемент в коллекции объектов) в коде либо при нажатии на кнопки передвижения вверх или вниз также вызывается защищенный метод UpdateEditText, обновляющий элемент управления новой строкой.

Если защищенное свойство UserEdit имеет значение true, строка соотносится с одним из значений в коллекции до обновления текстового отображения элемента управления.

Пример В приведенном ниже примере создается и инициализируется элемент

управления DomainUpDown. Данный пример позволяет задать значения для некоторых его свойств и создать коллекцию строк, отображаемых в элементе управления «вверх/вниз».

Предполагается, что TextBox, CheckBox и Button уже инициализированы на этой форме. В этом примере также предполагается, что на уровне классов имеется переменная myCounter – 32-разрядное целое число. Можно ввести строку в текстовое поле и добавить ее в коллекцию Items нажатием кнопки.

При помощи флажка можно включать и отключать свойство Sorted, наблюдая различия в коллекции элементов в элементе управления «вверх/вниз».

// СОЗДАЕТСЯ КОНСТРУКТОРОМ: protected DomainUpDown domainUpDown1;

private void MySub()

{

//Создать и проинициализировать DomainUpDown domainUpDown1 = new System.Windows.Forms.DomainUpDown();

//Добавить DomainUpDown в форму

332

Controls.Add(domainUpDown1);

}

private void button1_Click (Object sender, System.EventArgs e)

{

// Добавить содержимое TextBox в коллекцию DomainUpDown domainUpDown1.Items.Add ((textBox1.Text.Trim()) + " - " + myCounter);

myCounter = myCounter + 1;

// Перейти к следующему номеру

textBox1.Text = "";

// Очистить TextBox.

}

private void checkBox1_Click(Object sender, System.EventArgs e)

{

// Если сортировка разрешена, то запретить сортировку, и наоборот if (domainUpDown1.Sorted)

domainUpDown1.Sorted = false;

else

domainUpDown1.Sorted = true;

}

void domainUpDown1_SelectedItemChanged(Object s, EventArgs e)

{

// Вывести значение свойств SelectedIndex and SelectedItem MessageBox.Show(

"SelectedIndex: " + domainUpDown1.SelectedIndex+ "\n" + "SelectedItem: " + domainUpDown1.SelectedItem);

}

5. NumericUpDown

Элемент управления NumericUpDown содержит одно численное значение, которое можно увеличить или уменьшить, нажав кнопку ВВЕРХ или ВНИЗ элемента управления. Пользователь сам может ввести значение, если только свойство ReadOnly имеет значение false.

Чтобы задать допустимый интервал значений элемента управления, присвойте значения свойствам Minimum и Maximum.

Задайте свойству Value начальное значение. В коде это свойство будет возвращать вам выбранное значение.

Задайте свойству Increment - шаг изменения значения, когда пользователь нажмет кнопку ВВЕРХ или кнопку ВНИЗ.

Чтобы значения отображались в шестнадцатеричном формате, присвойте свойству Hexadecimal значение true.

Чтобы в десятичных числах отображался разделитель групп разрядов, присвойте свойству ThousandsSeparator значение true.

Чтобы задать число десятичных разрядов, которые будут отображаться после разделителя целой и дробной частей, присвойте свойству DecimalPlaces значение, равное этому числу десятичных разрядов.

При вызове метода UpButton или DownButton, как в коде, так и вручную, нажатием кнопки ВВЕРХ или кнопки ВНИЗ, новое значение проверяется, и элемент управления обновляется, принимая это значение в соответствующем формате. В частности, если свойство UserEdit имеет зна-

333

чение true, метод ParseEditText вызывается до проверки и обновления значения. После этого проверяется, находится ли значение в интервале значений свойств Minimum и Maximum, а затем вызывается метод

UpdateEditText.

Пример В приведенном ниже примере создается и инициализируется элемент

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

чики для их событий Click. Свойства DecimalPlaces, ThousandsSeparator и Hexadecimal задаются по событию Click каждого флажка.

public void InstantiateMyNumericUpDown()

{

//Create and initialize a NumericUpDown control. numericUpDown1 = new NumericUpDown();

//Dock the control to the top of the form.

numericUpDown1.Dock = System.Windows.Forms.DockStyle.Top;

//Set the Minimum, Maximum, and initial Value. numericUpDown1.Value = 5; numericUpDown1.Maximum = 2500; numericUpDown1.Minimum = -100;

//Add the NumericUpDown to the Form. Controls.Add(numericUpDown1);

}

//Check box to toggle decimal places to be displayed. private void checkBox1_Click(Object sender, EventArgs e)

{

/* If DecimalPlaces is greater than 0, set them to 0 and round the current Value; otherwise, set DecimalPlaces to 2 and change the Increment to 0.25. */

if (numericUpDown1.DecimalPlaces > 0)

{

numericUpDown1.DecimalPlaces = 0;

numericUpDown1.Value = Decimal.Round(numericUpDown1.Value, 0);

}

else

{

numericUpDown1.DecimalPlaces = 2; numericUpDown1.Increment = 0.25M;

}

}

//Check box to toggle thousands separators to be displayed.

private void checkBox2_Click(Object sender, EventArgs e)

{

334

/* If ThousandsSeparator is true, set it to false; otherwise, set it to true. */

if (numericUpDown1.ThousandsSeparator)

{

numericUpDown1.ThousandsSeparator = false;

}

else

{

numericUpDown1.ThousandsSeparator = true;

}

}

// Check box to toggle hexadecimal to be displayed. private void checkBox3_Click(Object sender, EventArgs e)

{

/* If Hexadecimal is true, set it to false; otherwise, set it to true. */

if (numericUpDown1.Hexadecimal)

{

numericUpDown1.Hexadecimal = false;

}

else

{

numericUpDown1.Hexadecimal = true;

}

}

6. DateTimePicker и MonthCalendar

Элемент управления DateTimePicker позволяет пользователю выбирать дату и время и отображать их в указанном формате.

Календарь MonthCalendar – частный случай ЭУ DateTimePicker. По-

зволяет выбрать дату и возвратить ее значение.

ShowCheckBox=true

 

ShowUpDown = true

 

Format = Time

MonthCalendar

Восстановить текущую дату

 

рис.17

Свойство Value получает или задает значение даты/времени, назначаемое элементу управления. Если свойство Value не было изменено ко-

335

дом или пользователем в окне свойств, ему присваивается значение текущей даты и времени (DateTime.Now).

Описание свойства:

public DateTime Value {get; set;}

Примеры установки текущих значений:

dateTimePicker1.Value = DateTime.Now.AddDays(1); dateTimePicker2.Value = new System.DateTime(2007, 5, 13, 14, 34, 8, 0);

AddDays(1) - добавляет указанное число дней к значению этого экземпляра.

Ограничить количество выбираемых значений даты и времени можно с помощью настройки свойств MinDate и MaxDate.

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

ет настроить свойства CalendarForeColor, CalendarFont, CalendarTitleBackColor, CalendarTitleForeColor, CalendarTrailingForeColor и CalendarMonthBackground.

Свойство Format определяется значением из перечисления DateTimePickerFormat элемента управления. По умолчанию свойству

Format для даты присваивается значение DateTimePickerFormat.Long.

Другие значения перечисления: Short, Time, Custom.

Если свойство Format имеет значение DateTimePickerFormat.Custom,

можно создать собственный стиль формата путем настройки свойства CustomFormat и построения настраиваемой строки формата.

Пример, при указании для свойства CustomFormat значения "ddMMMMyyyy HH:mm:ss", дата будет отображена следующим обра-

зом: «13 мая 2007 г. 11:52:05».

Чтобы использовать элемент управления в стиле «вверх и вниз» для настройки значения даты и времени, следует задать для свойства ShowUpDown значение true. Если элемент управления календарем выделен, он не раскроется.

Значения даты/времени можно настроить путем выделения каждого элемента по отдельности и использования кнопок перемещения вверх и вниз для изменения значения.

При необходимости пользовательского форматирования даты и ограничения выделения только одной датой можно использовать элемент управления DateTimePicker вместо MonthCalendar. Если использовать DateTimePicker, необходимость в частых проверках значений даты/времени отпадает.

Примечание. Элемент управления DateTimePicker поддерживает только григорианский календарь.

Пример В приводимом ниже примере производится создание нового экземп-

ляра элемента управления DateTimePicker и его инициализация. Свойству CustomFormat элемента управления присвоено значение. Кроме того, свойство ShowCheckBox настроено таким образом, чтобы элемент управ-

336

ления отображал CheckBox, а свойство ShowUpDown настроено таким образом, чтобы элемент управления отображался как элемент управления «вверх и вниз».

public void CreateMyDateTimePicker()

{

//DateTimePicker dateTimePicker1 = new DateTimePicker();

//Установить минимальную и максимальную даты. dateTimePicker1.MinDate = new DateTime(1985, 6, 20); dateTimePicker1.MaxDate = DateTime.Today;

//Установить строку форматирования

dateTimePicker1.CustomFormat = "ddMMMMyyyy HH:mm:ss"; dateTimePicker1.Format =

System.Windows.Forms.DateTimePickerFormat.Custom;

// Установить CheckBox и высветить ЭУ up-down control. dateTimePicker1.ShowCheckBox = true; dateTimePicker1.ShowUpDown = true;

}

Пример. Создание календаря на 6 месяцев с номерами недель: CalendarDimensions.Width = 3; // см. 1 CalendarDimensions.Height = 2;

SelectionStart SelectionEnd

1

MaxSelectionCount – кол. выделенных дат

2

3

рис.18

Пример. Чтения даты из календаря monthCalendar1:

337

DateTime dt = monthCalendar1.SelectionStart;

string дата = dt.Day + "." + dt.Month + "." + dt.Year;

Свойства SelectionStart и SelectionEnd хранят дату в виде объектов структуры DateTime.

Свойство Содержание

Day

Число

Mouhth

Номер месяца

 

 

Year

Год

 

 

Millisecond

Миллисекунды

Second

Секунды

 

 

Minute

Минуты

Hour

Часы

DayOfWeek

Номер дня в неделе

 

 

DayOfYear

Номер дня в году

 

 

Ticks

Количество периодов системного таймера

TimeOfDay

Время дня

Today

Текущая дата

 

 

UtcNow

Текущая локальная дата в терминах универсального

 

координированного времени (coordinated universal time,

338

DataGridView - СЕТКА

1. Общие сведения

ЭУ DataGridView позволяет отобразить данные в виде набора строк и столбцов, то есть в виде таблицы.

Чтобы не путать таблицу DataGridView с реляционной таблицей базы данных, первую называют сеткой.

Некоторые классы и их свойства:

[ComVisibleAttribute(true)] [ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)] public class DataGridView : Control, ISupportInitialize

public DataGridViewColumnCollection Columns { get; }

public DataGridViewRowCollection Rows { get; }

public class DataGridViewColumnCollection : BaseCollection, IList, ICollection, IEnumerable

public class DataGridViewRowCollection : IList, ICollection, IEnumerable

DataGridViewRowCollection.Add () – добавить новую строку в коллекцию.

DataGridViewRow – класс, представляет одну строку в DataGridView.

DataGridViewColumnCollection.Add (DataGridViewColumn) – добавляет ука-

занный столбец в коллекцию

DataGridViewColumn – класс, представляет один столбец в DataGridView.

DataGridViewColumnCollection.Add (String, String) - добавляет столбец с ука-

занным именем и заголовком в коллекцию.

public class DataGridViewTextBoxColumn : DataGridViewColumn

DataGridViewTextBoxColumn – столбец, представляет коллекцию ячеек типа DataGridViewTextBoxCell.

public class DataGridViewTextBoxCell : DataGridViewCell

DataGridViewTextBoxCell – отображает редактируемый текст ячейки в ЭУ DataGridView.

339

столбец 0

1

строка 0с

1

ячейка [2,2]

 

рис.1

Некоторые свойства класса DataGridView:

Columns

Возвращает коллекцию всех столбцов, содер-

 

жащихся в ЭУ.

Rows

Возвращает коллекцию всех строк, содержа-

 

щихся в ЭУ.

 

 

CurrentCellAddress

Возвращает индекс строки и столбца текущей

 

ячейки.

CurrentRow

Возвращает строку, содержащую текущую ак-

 

тивную ячейку.

 

 

CurrentCell

Возвращает или устанавливает текущую ак-

 

тивную ячейку.

Item

Overloaded. Gets or sets the cell located at the

 

intersection of the specified row and column. В язы-

 

ке C# это свойство является индексатором класса

 

DataGrid.

 

 

Разрешить ДОБАВЛЕНИЕ, УДАЛЕНИЕ, и изменение РАЗМЕРА строк. Разрешить изменение ПОРЯДКА и РАЗМЕРА столбцов.

340

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]