:: Меню ::

Головна
  • Про сайт
  • Введення
  • Середовище програмування VB .NET: Visual Studio .NET
  • Вирази, оператори і передача управління
  • Класи і об'єкти
  •  Спадкоємство і інтерфейси
  • Обробка подій і делегати
  • Обробка помилок в VB .NET
  • Форми Windows, графічний вивід і друк
  • Уведення-виведення
  •  Багатопотокові застосування
  • Підтримка баз-даних в VB .NET
  • Короткий огляд ASP .NET
  • Складки .NET, установка додатків і COM Interop
  • Книга для гостей
    Контакти
    Добавити у вибране

    :: Друзі ::

     
     

    :: Лічильники ::

    = =

     

     

     

     

    Додавання нових властивостей

    На наступному кроці клас буде доповнений властивостями Minvalue і Maxvalue. Програмна реалізація цих властивостей виглядає вельми прямолінійно. При створенні екземпляра змінним привласнюються значення 1 і максимальне значення типу Long відповідно. Надалі необхідно простежити за тим, щоб властивість Minvalue не опинилася менше 1, а властивість Maxval ue не перевищувало граничної величини:

    Private m_min As Long = 1

    Private m_max As Long = Long.MaxValue

    Public Property Minvalue()As Long Get

    Return m_min End Get Setcbyval Value As Long)

    m_min = Math.Maxd,Value)

    End Set

    End Property

    Public Property Maxvalue()As Long Get

    Return m_max End Get Set(Byval Value As Long)

    m_max =Math.Min(m_min.Value)

    End Set

    End Property

    Якщо включити цей код в проект і відкомпілювати його, властивість підтримуватиметься елементом, але не відображатиметься у вікні властивостей. Проблема вирішується установкою атрибуту Browsable для імені властивості:

    <Browsable(True)> Public Property Minvalue

    Зразковий вид вікна властивостей при установці атрибуту Browsable для властивостей Minvalue і Maxvalue показаний на мал. 8.18.

    Мал. 8.18. Властивості Maxvalue і Minvalue у вікні властивостей

    Як бачите, нестандартна властивість відображається у вікні властивостей, а властивості Maxvalue і Minvalue виводяться з початковими значеннями, які їм були привласнені. Ще цікавіше те, що вікно властивостей відкидає будь-які спроби зміни властивостей способом, забороненим в програмі (наприклад, привласнення Minvalue значення, меншого 1).

    Щоб властивість не відображалася у вікні властивостей, досить встановити для нього атрибут <Browsable(False)>. Заборона може встановлюватися як для нових, так і для перевизначуваних властивостей. Наприклад, наступний фрагмент прибирає стандартна властивість Text спеціалізованого текстового поля з вікна властивостей:

    <Browsable(False)> Public Overrides

    Property Text() As String Get

    Return Mybase.Text

    End Get Set(Byval Value As String)

    Mybase.Text = Value

    End Set

    End Property

    Як видно з мал. 8.19, властивість Text перестає відображатися у вікні властивостей.

    Мал. 8.19. При установці атрибуту Browsable властивість Text не відображається

    Ієрархія простору імен System.Windows.Forms

    Розглянувши прості можливості використання простору імен Windows . Forms на конкретних прикладах, ми переходимо до ієрархії класів, показаної на мал. 8.20.

    Діаграма виглядає вельми страхітливо, але ми приділимо основну увагу головній лінії спадкоємства:

    System.ComponentModel .Component > Control

    З мал. 8.20 видно, що класи форм і елементів є похідними від класу Control. Наприклад, генеалогія класу Form виглядає так:

    Scrollablecontrol

    >Containercontrol

    > Form

    Мал. 8.20. Ієрархія класів простору імен Windows.Forms

    Текстове поле входить в іншу гілку:

    Control

    > Textboxbase

    > Richtextbox

    > Textbox

    Ієрархія основних різновидів кнопкових елементів виглядає так:

    Control

    > Buttonbase

    > Button

    > Checkbox

    > Radiobutton

    Клас Control вміщає в себе найбільшу кількість функцій (більше 300) і володіє найбільшими функціональними можливостями. Класи форм і елементів оголошуються похідними від членів класу Control.

    Даний розділ дає лише початкове уявлення про Windows.Forms. Щоб оволодіти можливостями цього простору імен на професійному рівні, необхідно ретельно вивчити електронну документацію і, можливо, купити більш спеціалізовану книгу.

    Клас Component є базовим класом для всіх компонентів простору імен System. Wi ndows. Forms. У нім зібрані члени, необхідні для реалізації включення (зокрема, розміщення елементів на формі або дочірніх вікон MDI в батьківському вікні MDI). В основному вони реалізовані у вигляді методів інтерфейсу Icomponent. Оскільки клас Component також займається звільненням ресурсів, що витрачаються при візуальній розробці, він реалізує Idisposable.

    Оскільки клас Control є базовим для елементів і форм, він підтримує багато операцій призначеного для користувача інтерфейсу, зокрема обробку подій клавіатури і миші. Крім того, він визначає колір, позицію і розмір форми або елементу.

    Використання засобів базового класу Control (і зокрема, обробка ключових подій) розглядається в наступному розділі. Проте спочатку ми продовжимо шлях до форм в ієрархії класів System. Windows. Forms. Оскільки серед предків класу Form числиться Scrollablecontrol, форми VB володіють корисною особливістю, яку оцінить кожен, хто намагався реалізувати форму з прокруткою в Vb6:

    При виході за грашци поточного вмісту форма автоматично прокручується. Погляньте на мал. 8.21 — на нім зображена форма, що дозволяє прокручувати дуже велику фрактальну картинку (більше 5 Мбайт в запакованому вигляді!) з базовим безліччю Мандельброта. За інформацією про безліч Мандельброта звертайтеся за адресою www.olympus.net/personal/dewey/mandelbrot.html.

    Прокрутку форм можна протестувати на будь-якому зображенні достатньо великих розмірів:

    1. Розмістите на формі графічне поле і задайте його властивості Sizemode значення Autosize.
    2. Знайдіть великий графічний файл.

    Мал. 8.21. Прокрутка зображення базового безліч Мандельброта

    1. Приведіть процедуру Form_load до наступного вигляду:

    1 Private Sub Forml_load(Byval sender As System.Object,_

    Byval e As System.EventArgs)Handles Mybase.Load

    2 Me.AutoScroll = True

    3 Me.VScroll = True

    4 Me.HScroll = True

    5 Dim abigbox As Rectangle = Rectangle.Inflate _

    6 (Me.ClientRectangle. 6. 6)

    7 Pictureboxl.Bounds = abigbox

    8 ' Передбачається, що графічний файл знаходиться в підкаталозі \bin

    9 Pictureboxl.Image = Image.FromFile("Mandelbrot Set.bmp")

    10 End Sub

    Головне місце в цьому лістингу займає рядок 2, в якій властивості Autoscrol 1, визначуваній в класі Scrollabl e Control, задається значення True. Без цього прокрутка працювати не буде. Рядки 3 і 4 указують на те, що у вікні повинні відображатися обидві смуги прокрутки (вертикальна і горизонтальна). У рядку 5 загальний метод класу System.Drawing.Rectangle створює прямокутний об'єкт, в 6 разів більший клієнтській області форми. Рядок 7 приводить графічне поле до заданого розміру, привласнюючи прямокутник властивості Bounds, присутній у всіх елементах. Як вказано в коментарі, рядок 9 припускає, що файл з растровим зображенням знаходиться в підкаталозі \bin каталога рішення — в реальній програмі для визначення місцезнаходження файлу слід було б викликати діалогове вікно Open File.

    Засоби базового класу Control

    Клас Control містить більше 300 членів, і описати їх всіх (або хоч би велику частину) в одному розділі просто неможливо. Отже, вам все одно доведеться звернутися до електронної документації [ До речі кажучи, пакет форм Windows автоматично пізнає операції з колесом миші і забезпечує прокрутку форми/елементу там, де це має сенс. Таким чином, в більшості випадків вам не доведеться використовувати нову подію Control.MouseWheel. ]. Проте події клавіатури і події перевірки, що займають важливе місце в роботі елементів, декілька відрізняються від своїх прототипів з Vb6, і при роботі з ними слід пам'ятати про деякі нюанси.




    :: Наша кнопка ::

    Отримати код:

    Підтримайте наш сайт і розмістіть нашу кнопку на своєму ресурсі.


    :: Реклама ::

    Скачати безкоштовно програму Microsoft Front Page 2003


    :: Посилання ::

    -


     

     

     


    Copyright ©