диаграмме. Диаграмма показывает ситуацию, когда выбрано создание проекта стандартного EXE, отличающегося от других типов проектов (например, ActiveX DLL вообще не имеет цикла сообщений, но вместо этого зависит от клиентов в отношении вызова методов), и при этом дается примерное представление о том, что происходит.

Ранее было сказано, что в C# программист получает доступ ко всему коду, теперь необходимо это уточнить: все мельчайшие подробности относительно того, что происходит в цикле сообщений, надежно скрыты внутри различных DLL, которые написала компания Microsoft, но можно видеть методы верхнего уровня, вызывающие различные элементы обработки. Допустим, имеются доступы к коду, который начинает выполнение всей программы, к вызову библиотечного метода, который заставляет программу войти в цикл сообщений и переводит ее в спящее состояние и т.д. Имеется также доступ к исходному коду, создающему экземпляры всех различных элементов управления, которые помещаются на форме, делая эти экземпляры видимыми и определяя их начальные положения, размеры и все остальное. Необходимо отметить еще и тот момент, что не требуется писать никакой подобный код самостоятельно. При использовании Visual Studio.NET для создания проекта C# по-прежнему появляется диалоговое окно, спрашивающее, какой тип проекта необходимо создать, и Visual Studio.NET будет по-прежнему готовить весь базовый код. Различие состоит в том, что Visual Studio.NET записывает этот базовый код, как исходный на C#, который затем можно непосредственно редактировать.

Все это приводит к тому, что исходный код получается более длинным и более сложным. Однако огромное его преимущество заключается в том, что он обеспечивает значительно большую гибкость в том, что делает программа и как она себя ведет. А значит, можно написать намного больше типов проектов в C#. В то время как в Visual Basic возможно написание только различных видов форм и компонентов COM, в C# вы в праве написать любую из различных типов программ, которые выполняются под Windows. Это включает, например, консольные приложения (командной строки) и страницы ASP.NET (наследник ASP), что нельзя написать в VB6 (можно использовать VBScript для страниц ASP). В этом приложении, однако, мы сосредоточимся на классических приложениях GUI для Windows.

Код C# для оставшейся части программы

В этом разделе будет рассмотрена оставшаяся часть кода для примера SquareSample, в результате чего мы узнаем немного больше о классах в C#.

Пример SquareRoot на C# был создан в Visual Studio.NET, а пример на VB — в IDE VB6. Однако представленный здесь код является не совсем тем, который сгенерировала Visual Studio.NET. Помимо добавления обработчика событий, сделаны и другие изменения в коде, чтобы лучше проиллюстрировать принципы программирования в C#. Но несмотря ни на что, он все-таки даст хорошее представление о той работе, которую делает Visual Studio.NET, когда создает проект.

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

using System;

using System.Drawing;

using System.Collections;

using System.ComponentModel;

using System.Windows.Forms;

using System.Data;

namespace Wrox.ProfessionalCSharp.AppendixC.SquareRootSample {

 /// <summary>

 /// Form, которая формирует основное окно приложения:

 /// </summary>

 public class SquareRootForm : System.Windows.Forms.Form {

  private System.Windows.Forms.TextBox txtNumber;

  private System.Windows.Forms.TextBox txtSign;

  private System.Windows.Forms.TextBox txtResult;

  private System.Windows.Forms.Button cmdShowResults;

  private System.Windows.Forms.Label label1;

  private System.Windows.Forms.Label label2;

  private System.Windows Forms.Label label3;

  private System.Windows.Forms.Label label4;

  /// <summary>

  /// Необходимые для designer переменные.

  /// </summary>

  private System.ComponentModel.Container components;

  public SquareRootForm() {

   InitializeComponent();

  }

  public override void Dispose() {

   base.Dispose();

   if(components != null) components.Dispose();

  }

#region Windows Form Designer generated code

  /// <summary>

  /// Требуемый для поддержки Designer метод - не изменять

  /// содержимое этого метода с помощью редактора кода.

  /// </summary>

  private void InitializeComponent() {

   this.txtNumber = new System.Windows.Forms.TextBox();

   this.txtSign = new System.Windows.Forms.TextBox();

   this.cmdShowResults = new System.Windows.Forms.Button();

   this.label3 = new System.Windows.Forms.Label();

   this.label4 = new System.Windows.Forms.Label();

   this.label1 = new System.Windows.Forms.Label();

   this.label2 = new System.Windows.Forms.Label();

   this.txtResult = new System.Windows.Forms.TextBox();

   this.SuspendLayout();

   //

   // txtNumber

   //

   this.txtNumber.Location = new System.Drawing.Point(160, 24);

   this.txtNumber.Name = 'txtNumber';

   this.txtNumber.TabIndex = 0;

   this.txtNumber.Text = '';

   //

   // txtSign

   //

   this.txtSign.Enabled = false;

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату