netlib.narod.ru | < Назад | Оглавление | Далее > |
Какие преимущества дает наследование от класса Form в сравнении с созданием экземпляра этого класса? Хотя большинство методов и свойств Form определены как public, некоторые важные свойства определены как protected. Эти защищенные методы и свойства доступны только наследникам Form. Одно из таких защищенных свойств — ResizeRedraw, которое я рассмотрю в главе 3.
Один из защищенных методов, наследуемых Form от Control — OnPaint. Однако он вам нужен не для того, чтобы его вызывать, но чтобы переопределить — тогда вам не потребуется подключать обработчик события Paint. У метода OnPaint один параметр — объект типа PaintEventArgs. Можно из этого параметра получить объект Graphics точно так же, как и в обработчике события Paint.
Вот окончательный вариант программы Windows Forms «hello-world».
HelloWorld.cs
//--------------------------------------------- // HelloWorld.cs (C) 2001 by Charles Petzold //--------------------------------------------- using System; using System.Drawing; using System.Windows.Forms; class HelloWorld: Form { public static void Main() { Application.Run(new HelloWorld()); } public HelloWorld() { Text = "Hello World"; BackColor = Color.White; } protected override void OnPaint(PaintEventArgs pea) { Graphics grfx = pea.Graphics; grfx.DrawString("Hello, Windows Forms!", Font, Brushes.Black, 0, 0); } }
Это официальный, сертифицированный, проверенный программистами и одобренный мамой способ создания формы на языке С# при помощи библиотеки классов Windows Forms. Вот почему это первая программа книги, названная просто HelloWorld. (Правда, в следующей главе я покажу лучший способ указания цвета фона и цвета текста.) Обратите внимание, что в OnPaint я ничего не ставил перед Font. Методу OnPaint не нужен параметр objSender, так как форма, для которой вызывается OnPaint, всегда определяется как this.
Вот как выглядит окно программы:
Но всегда найдется умник, который сидит на галерке и тянет руку, нахально спрашивая: «А можно отцентрировать текст в окне?»
Да, можно, и в следующей главе я покажу три различных способа, как это сделать.
netlib.narod.ru | < Назад | Оглавление | Далее > |