Лекции.Орг


Поиск:




Категории:

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

 

 

 

 


Задания для самостоятельного выполнения. 3.7.Добавьте возможность сортировки абонентов телефонного справочника по:




 

3.7. Добавьте возможность сортировки абонентов телефонного справочника по:

– имени;

– отчеству;

– улице;

– дому;

– телефону.

3.8. Добавьте возможность сортировки абонентов телефонного справочника по убыванию по любому полю.

 

Упражнение 13.5. Дополним приложение “Телефонный справочник” возможностью изменения текущего абонента.

Решение

1-й этап. Доработаем визуальный интерфейс приложения.

Дополним пункт меню “Абонент” подпунктом “Изменить”. При выборе этого пункта будет открываться другая форма, в ней будет отображаться текущее значение элемента списка. После того, как пользователь изменит значение необходимых полей, в список вносятся изменения – текущий элемент списка обновляется.

Форма, которая нужна для изменения абонента, практически совпадает с формой AddForm, поэтому воспользуемся уже созданной нами формой.

2-й этап. Разработаем необходимый программный код.

Для того чтобы форма AddForm “понимала”, для какой цели ее вызвали – для добавления или изменения абонента – создадим переменную типа enum – перечисление (вставьте ее описание в пространство имен namespace Lab13, например, сразу после компараторов, перед самой последней закрывающейся фигурной скобкой).

 

public enum AddOrEdit

{

Add,

Edit

}

 

Создадим обработчик выбора пункта “Изменить”.

 

if (PhoneNote.Count > 0)

{

// создаем запись - экземпляр класса Note

Note MyRecord = new Note();

// определяем поля записи

// (берем значения из соответствующих компонентов на форме)

MyRecord.LastName = LastNameTextBox.Text;

MyRecord.Name = NameTextBox.Text;

MyRecord.Patronymic = PatronymicTextBox.Text;

MyRecord.Phone = PhoneMaskedTextBox.Text;

MyRecord.Street = StreetTextBox.Text;

MyRecord.House = (ushort)HouseNumericUpDown.Value;

MyRecord.Flat = (ushort)FlatNumericUpDown.Value;

// создаем экземпляр формы и открываем эту форму

AddForm _AddForm = new AddForm(MyRecord, AddOrEdit.Edit);

_AddForm.ShowDialog();

// изменяем текущую запись

PhoneNote[current] = _AddForm.MyRecord;

}

PrintElement();

 

Поясним код. Если список не пуст, то сначала формируется запись MyRecord – значения полей считываются из соответствующих компонентов формы. Затем определяется экземпляр класса формы AddForm и открывается форма с двумя параметрами – записью MyRecord и указанием, что форма открывается для изменения записи. При закрытии формы AddForm обновляется значение текущей записи. Кроме того, в обработчике вызывается метод PrintElement (), выводящий текущий измененный элемент или, в случае пустого списка – просто очищающий поля записи MainForm.

Изменим одну строку в обработчике выбора пункта “Добавить”. При создании экземпляра класса AddForm добавим второй параметр со значением AddOrEdit.Add.

 

AddForm _AddForm = new AddForm(MyRecord, AddOrEdit.Add);

 

Теперь откроем класс формы AddForm. Добавим функциональность, связанную с изменением записи MyRecord.

Изменим конструктор класса формы AddForm:

 

public AddForm(Note _MyRecord, AddOrEdit MyType)

{

InitializeComponent();

MyRecord = _MyRecord;

// если форма открыта для добавления

if (MyType == AddOrEdit.Add)

{

Text = "Добавление абонента";

AddButton.Text = "Добавить";

}

else // если форма открыта для изменения записи

{

Text = "Изменение абонента";

AddButton.Text = "Изменить";

// определяем значение компонентов на форме

LastNameTextBox.Text = MyRecord.LastName;

NameTextBox.Text = MyRecord.Name;

PatronymicTextBox.Text = MyRecord.Patronymic;

PhoneMaskedTextBox.Text = MyRecord.Phone;

StreetTextBox.Text = MyRecord.Street;

HouseNumericUpDown.Value = MyRecord.House;

FlatNumericUpDown.Value = MyRecord.Flat;

}

}

 

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

Обработчик нажатия на кнопку изменять не нужно.

Запустите приложение. Проверьте, правильно ли выполняется изменение записи и не “навредили” ли мы добавлению записи.

 





Поделиться с друзьями:


Дата добавления: 2016-09-03; Мы поможем в написании ваших работ!; просмотров: 408 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Ваше время ограничено, не тратьте его, живя чужой жизнью © Стив Джобс
==> читать все изречения...

2245 - | 2190 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.009 с.