Изграждане на графичен потребителски интерфейс с Windows Forms



страница15/16
Дата27.09.2016
Размер1.09 Mb.
#10985
1   ...   8   9   10   11   12   13   14   15   16

Наследяване на форми


Наследяването на форми позволява повторно използване на части от потребителския интерфейс. Чрез него е възможно да променим наведнъж общите части на много форми. За целта дефинираме една базова форма, която съдържа общата за всички наследници функционалност.

Базовата форма е най-обикновена форма. Единствената особеност е, че контролите, които могат да се про­менят от наследниците, се обявяват като protected. Виртуални методи могат да реализират специфичната за наследниците функционал­ност, достъпна от базовата форма.

При наследяване на форма се наследява класът на базовата форма. При това се указва името на пространството, в което е дефинирана базовата форма, следвано от точка и името на базовата форма. Във Visual Studio .NET формите наследници могат да се създават като от менюто се избере File | Add New Item… | Inherited Form.

При наследяването на форми можем да поставим базовата форма и формите-наследници в различни асемблита и след това да проме­няме всички форми-наслед­ници, чрез промяната на единичен DLL файл.

Една особеност на VS.NET е, че по време на дизайн, промените, напра­вени върху базовата форма, не се отразяват върху формите наследници, преди да бъде прекомпилирано приложението.

Наследяване на форми – пример


Настоящият пример илюстрира възможностите за наследяване на форми в Windows Forms, при което се наследяват всички контроли в тях, както и методите и свойствата на класа, в който са дефинирани.

В примера ще създадем четири форми:



  • MainForm – главната форма на приложението, която ще служи за показване на другите форми при натискане на съответния бутон.

  • BaseForm – базова форма, от която други форми наследяват потребителски интерфейс и базова функционалност.

  • AddressForm – форма за попълване на адрес, наследник на BaseForm.

  • ItemsDetailsForm - форма за попълване на описание на продукт, наследник на BaseForm.

Схематично наследяването между формите е показано на фигурата по-долу:

Ето и стъпките за изграждане на нашето приложение:



  1. Стартираме VS.NET и създаваме нов Windows Forms проект.

  2. Задаваме на главната форма име MainForm и заглавие "Main Form". Променяме и името на файла от Form1.cs на MainForm.cs.

  3. Добавяме нова форма с име BaseForm. Това ще бъде нашата базова форма. От нея ще наследим останалите форми. В нея поставяме един Panel с име PanelMain и три бутона ButtonOK, ButtonCancel и ButtonReset. Дефинираме панела като protected, за да може да се променя от наследниците. Бутоните ButtonOK и ButtonCancel имат обичайното предназначение, което е зададено със свойствата AcceptButton и CancelButton на формата.

  4. Добавяме обработчик на събитието Click на бутона ButtonReset. В него ще извикваме виртуалния метод ResetFormFields(), който тряб­ва да се имплементира в наследниците и трябва да изтрива всички полета:

    private void ButtonReset_Click(object sender,System.EventArgs e)

    {

    ResetFormFields();



    }

  5. Добавяме и виртуалния метод ResetFormFields():

    protected virtual void ResetFormFields()

    {

    // Descendand form should implement reset functionality here



    }

  6. Компилираме приложението, за да се създаде асемблито, в което ще се съдържа формата, от която ще наследяваме. За целта избираме Build | Build Solution.

  7. Добавяме първата форма-наследник. За целта избираме File | Add New Item… | Inherited Form. Въвеждаме за име на формата AddressForm и натискаме бутона open. От появилия се списък изби­раме BaseForm за компонент, от който ще наследяваме. Отваря се формата-наследник, която изглежда точно като базовата форма.

  8. Променяме заглавието й на Address Form. Добавяме във формата един TextBox с име TextBoxAddress и две ComboBox контроли с имена ComboBoxTown и ComboBoxCountry. Задаваме на свойството Multiline на TextBoxAddress стойност true. За DropDownStyle на ComboBox контролите задаваме DropDownList. В колекцията Items на ComboBoxTowns въвеждаме няколко имена на български градове, а в тази на ComboBoxTowns въвеждаме "България".

  9. Предефинираме метода ResetFormFields() така, че да изчиства поле­та­та на формата:

    protected override void ResetFormFields()

    {

    this.TextBoxAddress.Clear();



    this.ComboBoxTown.SelectedIndex = -1;

    this.ComboBoxCountry.SelectedIndex = -1;

    }


  10. Добавяме втората форма-наследник. Задаваме ItemDetailsForm за име на формата. Променяме заглавието й на Item Details Form. Добавяме във формата две TextBox контроли с имена TextBoxName и TextBoxPrice, един ComboBox с име ComboBoxCategory и един CheckBox с име ChackBoxAvailability. За DropDownStyle на ComboBoxCategory задаваме DropDownList, а в колекцията Items въвеждаме няколко категории – "Алкохол", "Безалкохолни напитки", "Колбаси", "Стоки за бита". Задаваме на свойството Text на ChackBoxAvailability стойност "Наличност".

  11. Предефинираме и в тази форма метода ResetFormFields() така, че да изчиства поле­та­та:

    protected override void ResetFormFields()

    {

    this.TextBoxName.Clear();



    this.TextBoxPrice.Clear();

    this.ComboBoxCategory.SelectedIndex = -1;

    this.CheckBoxAvailability.Checked = false;

    }


  12. Поставяме подходящи етикети на контролите във формите – например при TextBoxName поставяме етикет, чието свойство Text има стойност "Име на продукт:".

  13. В главната форма добавяме два бутона с имена ButtonAddressForm и ButtonItemDetailsForm. В обработчиците на събитията Click на тези бутони ще показваме формите наследници:

    private void ButtonAddressForm_Click(object sender,

    System.EventArgs e)

    {

    AddressForm addressForm = new AddressForm();



    addressForm.ShowDialog();

    addressForm.Dispose();

    }
    private void ButtonItemDetailsForm_Click(object sender,

    System.EventArgs e)

    {

    ItemDetailsForm itemDetailsForm = new ItemDetailsForm();



    itemDetailsForm.ShowDialog();

    itemDetailsForm.Dispose();

    }


  14. Приложението е готово и можем да го стартираме и тестваме:





Сподели с приятели:
1   ...   8   9   10   11   12   13   14   15   16




©obuch.info 2024
отнасят до администрацията

    Начална страница