KNOW INTUIT, Лекция, Създаване на прозоречни приложения на Windows Forms
Поставяне на контроли в потребителски прозорец
Нека наречем нашия клас, който наследява отForm, потребителски прозорец. Нека поставим в прозореца контрола от типа бутон, която се генерира от класаButton. Всички контроли са визуални и наследяват от класаControl. Следната програма показва как да създадете обектButton, да го поставите върху повърхността на формуляр и да прикачите манипулатор към събитиетоClickна бутона. Показва различни начини за персонализиране и управление на бутоните.
Използван във функциятаMain(), методът на класаApplication.EnableVisualStyles()ви позволява да зададете модерен облик на някои контроли. Генерираният формуляр с бутони ще изглежда така

Бутоните, поставени във формуляра, са неговите дъщерни обекти и се поставят в колекциятаControls. Като се има предвид, че в нашия пример само два бутона са деца, не сме положили специални грижи да ги разпознаем. Но в по-сложни случаи елементите трябва да бъдат наименувани в тяхното свойствоNameи разпознати по стойността на това свойство. За намиране на конкретен обектControlе подходящо или просто изброяване на всички елементи от колекциятаControlsна формуляра, или методътSystem.Windows.Forms.Control.ControlCollection.Find(string, bool).
Всички дъщерни елементи на формата са подредени вZ-ред(Z-последователност), което определя тяхната видимост на екрана и могат да се припокриват. ПървоначалниятZ-ред се определя от реда, в който елементите са добавени към формуляра, и е обратен на индексите на елементите в колекцията на формуляра: по-късните елементи се появяват в горната част. За да променитеZ-реда в процесаИзпълнението на програмата използва методитеBringToFront()иSendToBack()на класаControl.
Създаване на контролни разширения
В обектно-ориентираното програмиране има два начина за предаване на код от един клас към друг:композицияинаследяване. Композицията е създаване на екземпляр на един клас вътре в друг и след това използване на обект, а наследяването имплицитно предава кода на базовия клас на производния, обединявайки два или цяла верига от класове заедно.
Наследяването обикновено се прилага към формуляри, а композицията се прилага, когато контролите на библиотеката са поставени във формуляра. Но библиотечните контроли могат да се използват и като базови контроли, когато са наследени чрез разширяването им с производен клас.
Например, нека създадем клас, който разширява библиотечния класButton, в който дефинираме поведението на бутон, така че ако етикетът върху него не надвишава определената дължина, той остава недостъпен във формуляра. За да промените етикета на бутона, ще предоставим поле за въвеждане на текст от типаTextBox.