netlib.narod.ru< Назад | Оглавление | Далее >

Метод OnPaint

Какие преимущества дает наследование от класса 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.

Вот как выглядит окно программы:


Рис. 2.10.

Но всегда найдется умник, который сидит на галерке и тянет руку, нахально спрашивая: «А можно отцентрировать текст в окне?»

Да, можно, и в следующей главе я покажу три различных способа, как это сделать.


netlib.narod.ru< Назад | Оглавление | Далее >

Сайт управляется системой uCoz