Вход/Регистрация
C# для профессионалов. Том II
вернуться

Ватсон Карли

Шрифт:

InitializeComponent
является большим методом, поэтому он будет показан здесь полностью. Начинается он следующим образом:

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;

Показанный код является множеством вызовов для реального создания экземпляров всех элементов управления на форме. Этот фрагмент кода не содержит на самом деле ни одного нового элемента синтаксиса C#, который бы до сих пор не встречался. Следующая часть кода начинает задавать свойства элементов управления:

 //

 // 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;

 this.txtSign.Location = new System.Drawing.Point(160, 136);

 this.txtSign.Name = "txtSign";

 this.txtSign.TabIndex = 1;

 this.txtSign.Text = "";

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

Point
.
Point
является базовым классом .NET (строго говоря, структурой), который содержит x- и y-координаты. Синтаксис двух строк, задающих Location, является инструктивным. Свойство
TextBox.Location
является просто ссылкой на
Point
, поэтому, чтобы задать ему значение, необходимо создать и инициализировать объект
Point
, содержащий правильные координаты. Это первое использование нами конструктора с параметрами — в данном случае горизонтальной и вертикальной координат
Point
и, следовательно, элемента управления. Если было бы желательно транслировать одну из этих строк в VB, предполагая, что был определён некоторый модуль класса VB с именем
Point
, и мы имели бы класс, который имеет такое свойство, то лучшее, что можно было бы сделать, выглядело бы примерно следующим образом:

Dim Location As Point

Set Location = New Point

Location.X = 160

Location.Y = 24

SomeObject.Location = Location

Это сравнимо со следующим кодом на C#:

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

Относительная компактность эквивалентной инструкции C# должна быть очевидна.

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

 this.cmdShowResults.Name = "cmdShowResults";

 this.cmdShowResults.Size = new System.Drawing.Size(88, 23);

 this.cmdShowResults.TabIndex = 3;

 this.cmdShowResults.Text = "Show Results";

 this.cmdShowResults.Click +=

new System.EventHandler(this.OnClickShowResults);

Здесь происходит следующее. Кнопка, обозначенная как объект кнопки

cmdShowResults
, содержит событие
Click
, которое будет инициироваться, когда пользователь на нее нажмет. Надо добавить для этого события собственный обработчик событий. Сейчас C# не разрешает передавать имена методов непосредственно, вместо этого они должны помещаться в так называемый объект делегат. Детали этого здесь не рассматриваются, они приведены в главе 6 данной книги, но это делается для обеспечения безопасности типов. Вследствие такого действия появляется текст
new System.EventHandler
в этом коде. Когда имя обработчика событий будет спрятано, мы добавим его к событию, используя оператор
+=
, который будет рассмотрен ниже.

Арифметические операторы присваивания

Символ

+=
представляет в C# так называемый оператор сложения-присваивания. Он дает удобное сокращение для случаев, когда необходимо добавить некоторую величину к другой величине. Это работает следующим образом. Пусть в VB объявлены два целых числа А и В и необходимо записать следующее выражение:

В = В + А

В C# можно записать похожим образом:

В = В + А;

Однако в C# для этого существует альтернативная сокращенная запись:

B += А;

+=
в действительности означает "сложить значение выражения справа с переменной слева" и это работает для всех числовых типов данных, а не только для целых. Существуют также другие аналогичные операторы
*=
,
/=
и
– =
, которые соответственно умножают, делят и вычитают величину слева из переменной справа. Поэтому, например, чтобы разделить число на 2 и присвоить результат снова В, можно написать:

B /= 2;

Хотя в этом приложении не рассматриваются подробности, но C# имеет другие операторы, представляющие побитовые операции, а также дающие остаток при делении, и почти все они имеют соответствующие операторы операция-присваивание (см. главу 3).

  • Читать дальше
  • 1
  • ...
  • 279
  • 280
  • 281
  • 282
  • 283
  • 284
  • 285
  • 286
  • 287
  • 288
  • 289
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: