Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

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






Результати виконання практичних завдань. Завдання 1. Реалізація команд редагування даних





Завдання 1. Реалізація команд редагування даних.

 

У випадку використання ієрархії форм редагування, програмний код, що забезпечує виконання операцій додання, видалення та зміни даних розподілений між двома класами: EditingForm та FMembershipsEditor. Взаємодія між цими класами реалізується за допомогою механізму генерації і обробки подій.

Форма редагування може працювати в одному з чотирьох режимів (вибору, додання, редагування, видалення), які визначаються значенням.поля editingMode типу перераховування EditingMode:

public enum EditingMode { Selection, Adding, Editing, Deleting };

private EditingMode editingMode;

При зміні значення даного поля методом доступу set властивості EditingMode (лістинг 1):

· відображується відповідне повідомлення у рядку стану;

· змінюється стан активності кнопок панелей інструментів редагування та навігації;

· встановлюється відповідне значення поля editingBackColor, яке використовується в методами похідних класів у якості значення кольору фону полів введення даних;

· генерується подія EditingModeChanged.

 

Лістинг 1 – Реалізація властивості EditingMode.

public EditingMode EditingMode {

get { return editingMode; }

set {

editingMode = value;

ShowStatusMessage();

SetEditingControlsState();

editingBackColor = Changing

? GUIColors.ChangingBackColor

: GUIColors.ReadOnlyBackColor;

EditingModeChanged(this, new EventArgs());

}

}

 

У відповідь на подію EditingModeChanged похідна форма FMembershipsEditor змінює стан компонентів редагування даних і відображує значення атрибутів вибраного об’єкту:

private void editingForm_EditingModeChanged(

object sender, EventArgs e) {

SetDataControlsState();

ShowSelectedEntity();

}

 

Форма EditingForm генерує також події DataControlsClearing, DataAdding, DataEditing, DataDeleting та DataChanged, назви яких вказують на їх призначення. Ці події оброблюються відповідними методами класу FMembershipsEditor (лістинг 2).

 

Лістинг 2 – Фрагмент програмного коду класу FMembershipsEditor

namespace WorldDivisionForms.Editing.Derived {

 

public partial class FMembershipsEditor: EditingForm {

 

private WorldRepository dataRepository;

 

private CountriesMembership selectedEntity;

 

private CountriesMembership[] countriesMembershipsArray;

 

protected override void SetEntitiesArray() {

//EntitiesArray = dataRepository

//.CountriesMembershipsArray;

countriesMembershipsArray = dataRepository

.CountriesMembershipsArray;

EntitiesCount = countriesMembershipsArray.Length;

SetDefaultSelectedIndex();

SetSelectedEntity();

}

 

private void SetDefaultSelectedIndex() {

selectedIndex =

countriesMembershipsArray.Length == 0? -1: 0;

}

 

protected override void SetSelectedEntity() {

selectedEntity = selectedIndex < 0? null

: countriesMembershipsArray[selectedIndex];

ShowSelectedEntity();

SetNavigationControlsState();

}

 

protected override void SetDataControlsState() {

comboBoxOrganization.Enabled = Changing;

comboBoxCountry.Enabled = Changing;

comboBoxMembershipStatus.Enabled = Changing;

flowLayoutPaneAccessionDate.Enabled = Changing;

flowLayoutPanelSecessionDate.Enabled = Changing;

checkBoxIsFounder.Enabled = Changing;

textBoxDescription.ReadOnly =!Changing;

textBoxURL.ReadOnly =!Changing;

 

Color backColor = Changing

? GUIColors.ChangingBackColor

: GUIColors.ReadOnlyBackColor;

textBoxAccessionDate.BackColor = backColor;

textBoxSecessionDate.BackColor = backColor;

textBoxDescription.BackColor = backColor;

textBoxURL.BackColor = backColor;

comboBoxOrganization.BackColor = backColor;

comboBoxCountry.BackColor = backColor;

comboBoxMembershipStatus.BackColor = backColor;

}

 

 

private void FMembershipsEditor_Load(

object sender, EventArgs e) {

RefreshSelectionLists();

ShowSelectedEntity();

base.DataAdding += editingForm_DataAdding;

base.DataEditing += editingForm_DataEditing;

base.DataDeleting += editingForm_DataDeleting;

}

 

private void editingForm_DataAdding(

object sender, EventArgs e) {

Organization organization;

Country country;

MembershipStatus membershipStatus;

bool? isFounder;

DateTime accessionDate;

DateTime? secessionDate;

string description;

string url;

ConvertEnteringValues(

out organization, out country,

out membershipStatus, out isFounder,

out accessionDate, out secessionDate,

out description, out url);

CountriesMembership countriesMembership =

new CountriesMembership(organization, country,

membershipStatus, isFounder, accessionDate) {

SecessionDate = secessionDate,

Description = description,

URL = url

};

dataRepository.AddCountriesMembership(

countriesMembership);

}

 

private void ConvertEnteringValues(

out Organization organization, out Country country,

out MembershipStatus membershipStatus, out bool? isFounder,

out DateTime accessionDate, out DateTime? secessionDate,

out string description, out string url) {

organization = dataRepository

.OrganizationByName(comboBoxOrganization.Text);

country = dataRepository

.CountryByName(comboBoxCountry.Text);

membershipStatus = dataRepository

.MembershipStatusByName(

comboBoxMembershipStatus.Text);

isFounder = checkBoxIsFounder.CheckState

== CheckState.Indeterminate? (bool?)null

: checkBoxIsFounder.Checked;

accessionDate = DateTime.Parse(

textBoxAccessionDate.Text);

secessionDate = String.IsNullOrWhiteSpace(

textBoxSecessionDate.Text)? (DateTime?)null

: DateTime.Parse(textBoxSecessionDate.Text);

description = textBoxDescription.Text;

url = textBoxURL.Text.Trim();

}

 

private void editingForm_DataEditing(

object sender, EventArgs e) {

Organization organization;

Country country;

MembershipStatus membershipStatus;

bool? isFounder;

DateTime accessionDate;

DateTime? secessionDate;

string description;

string url;

ConvertEnteringValues(

out organization, out country,

out membershipStatus, out isFounder,

out accessionDate, out secessionDate,

out description, out url);

selectedEntity.Organization = organization;

selectedEntity.Country = country;

selectedEntity.MembershipStatus = membershipStatus;

selectedEntity.IsFounder = isFounder;

selectedEntity.AccessionDate = accessionDate;

selectedEntity.SecessionDate = secessionDate;

selectedEntity.Description = description;

selectedEntity.URL = url;

}

 

private void editingForm_DataDeleting(

object sender, EventArgs e) {

dataRepository.RemoveCountriesMembership(

selectedEntity);

}

 

private void checkBoxAccessionDate_CheckedChanged(

object sender, EventArgs e) {

dateTimePickerAccessionDate.Visible =

checkBoxAccessionDate.Checked;

}

 

private void dateTimePickerAccessionDate_ValueChanged(

object sender, EventArgs e) {

textBoxAccessionDate.Text =

dateTimePickerAccessionDate

.Value.ToShortDateString();

}

 

private void checkBoxSecessionDate_CheckedChanged(

object sender, EventArgs e) {

dateTimePickerSecessionDate.Visible =

checkBoxSecessionDate.Checked;

}

 

private void dateTimePickerSecessionDate_ValueChanged(

object sender, EventArgs e) {

textBoxSecessionDate.Text =

dateTimePickerSecessionDate

.Value.ToShortDateString();

}

 

}

}

 

 

Завдання 2. Реалізація взаємодії батьківської форми і дочірніх форм редагування даних.

 

Date: 2015-09-02; view: 272; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию