Категории
Самые читаемые
onlinekniga.com » Компьютеры и Интернет » Программирование » ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание - Эндрю Троелсен

ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание - Эндрю Троелсен

Читать онлайн ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание - Эндрю Троелсен

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 186 187 188 189 190 191 192 193 194 ... 259
Перейти на страницу:

В завершение главы был рассмотрен новый формат ресурсов .NET. Как выяснилось, файл *.resx определяет ресурсы в виде XML с помощью пар имен и значений. Этот файл можно обработать с помощью утилиты resgen.exe, чтобы привести его к двоичному формату (*.resources) и затем встроить соответствующие ресурсы в компоновочный блок. Наконец, тип ResourceManager обеспечивает простой способ программного извлечения встроенных ресурсов во время выполнения приложения.

ГЛАВА 21. Использование элементов управления Windows Forms

Эта глава представляет собой краткое руководство по использованию элементов управления, определенных в пространстве имен System.Windows.Forms. В главе 19 вы уже имели возможность поработать с некоторыми элементами управления, размещаемыми в главной форме: это MenuStrip, ToolStrip и StatusStrip. В этой главе мы рассмотрим различные типы, которые обычно размещают в пределах области клиента формы (это, например, Button, MaskedTextBox, WebBrowser, MonthCalendar, TreeView и т.п.). Рассмотрев базовые элементы пользовательского интерфейса, мы затем обсудим процесс создания пользовательских элементов управления Windows Forms, интегрируемых в среду разработки Visual Studio 2005.

После этого мы рассмотрим процесс построения пользовательских диалоговых окон, а также роль наследования форм, которое позволяет создавать иерархии связанных типов Form. В завершение главы обсуждается возможность стыковки и закрепления элементов графического интерфейса и выясняется роль типов FlowControlPanel и TableControlPanel, предлагаемых в .NET 2.0.

Элементы управления Windows Forms

Пространство имен System.Windows.Forms содержит ряд типов, представляющих наиболее часто используемые элементы графического интерфейса, которые обеспечивают поддержку взаимодействия с пользователем в приложении Windows Forms. Многие элементы управления из тех, с которыми вы будете работать ежедневно (такими, например, являются Button, TextBox и Label), интуитивно совершенно понятны, но чтобы работать с другими, более "экзотическими" элементами управления и компонентами (например, с TreeView, ErrorProvider и TabControl), требуются дополнительные пояснения.

Из главы 19 вы узнали, что тип System.Windows.Forms.Control является базовым классом для всех таких элементов. Напомним, что Control обеспечивает возможность обрабатывать события мыши и клавиатуры, задавать физические размеры и позицию элементов в форме с помощью различных свойств (Height, Width, Left, Right, Location и т.п.), манипулировать цветами фона и переднего плана, задавать активный шрифт/курсор и т.д. Кроме того, базовый тип Control определяет члены, контролирующие возможность закрепления и поведение стыковки элемента (объяснения по поводу указанных возможностей будут даны в тексте этой главы позже).

При изучении материала данной главы помните о том, что рассматриваемые здесь элементы управления наследуют большинство своих функциональных возможностей от базового класса Control. Поэтому мы сосредоточимся (более или менее) на уникальных членах этих элементов. Следует понимать, что эта глава не пытается полностью описать абсолютно все члены абсолютно всех элементов управления (это задача документации .NET Framework 2.0 SDK). Однако я уверен, что после завершения изучения материала этой главы у вас не возникнет проблем в понимании тех элементов, которые здесь непосредственно описаны не были.

Замечание. В Windows Forms предлагается целый ряд элементов управления (DataGridView, BindingSource и т.д.), позволяющих отображать содержимое реляционных баз данных. Некоторые из этих элементов управления будут рассмотрены в главе 22 при обсуждении ADO.NET.

Добавление элементов управления в форму вручную

Независимо от того, какой именно элемент управления вы выбираете для размещения в форме, последовательность шагов, которые при этом выполняются, оказывается одной и той же. Во-первых, вы должны определить члены-переменные, представляющие эти элементы управления. Затем, в рамках конструктора формы (или вспомогательного метода, вызванного конструктором), вы должны настроить вид каждого элемента управления, используя доступные свойства, методы и события этого элемента. Наконец (и это самое важное), после установки элемента управления в исходное состояние, вы должны добавить этот элемент к внутренней коллекции элементов управления формы, используя унаследованное свойство Controls. Если вы не сделаете этот заключительный шаг, ваш элемент управления не будет видимым во время выполнения.

Чтобы рассмотреть процесс добавления элементов управления в форму, давайте начнем с построения типа Form без помощи мастеров, используя только текстовый редактор и компилятор командной строки C#. Создайте новый файл C# с именем ControlsByHand.cs и добавьте в этот файл следующий программный код, определяющий новый класс MainWindow.

using System;

using System.Drawing;

using System.Windows.Forms;

namespace ControlsByHand {

 class MainWindow: Form {

  // Члены-переменные элементов формы.

  private TextBox firstNameBox = new TextBox();

  private Button btnShowControls = new Button();

  public MainWindow() {

   // Конфигурация формы.

   this.Text = "Простые элементы управления";

   this.Width = 300;

   this.Height = 200;

   CenterToScreen();

   // Добавление в форму нового текстового окна.

   firstNameBox.Text = "Привет";

   firstNameBox.Size = new Size(150, 50);

   firstNameBox.Location = new Point(10, 10);

   this.Controls.Add(firstNameBox);

   // Добавление в форму новой кнопки.

   btnShowControls.Text = "Щелкните здесь";

   btnShowControls.Size = new Size(90, 30);

   btnShowControls.Location = new Point(10, 10);

   btnShowControls.BackColor = Color.DodgerBlue;

   btnShowControls Click += new EventHandler(btnShowControls_Clicked);

   this Controls.Add(btnShowControls);

  }

  // Обработка события Click кнопки.

  private void.btnShowControls_Clicked(object sender, EventArgs e) {

   // Вызов ToString() для каждого элемента управления

   // из коллекции Controls формы.

   string ctrlInfo = "";

   foreach (Control c in this.Controls) {

    ctrlInfo += string.Format.("Элемент: {0}n:", s.ToString());

   }

   MessageBox.Show(ctrlInfo, "Элементы управления, помещенные в форму");

  }

 }

}

Добавьте в пространство имен ControlsByHand еще один класс, реализующий метод Main() программы.

class Program {

 public static void Main(string[] args) {

  Application.Run(new MainWindow());

 }

}

Теперь скомпилируйте полученный файл C# в командной строке, используя следующую команду.

csc /target:winexe *.cs

Запустив приложение и щелкнув на кнопке формы, вы увидите окно сообщения, в котором будет представлен список всех элементов, помещенных в эту форму (рис. 21.1).

Рис. 21.1. Взаимодействие с коллекцией элементов управления формы

Тип Control.ControlCollection

Процедура добавления нового элемента в форму исключительно проста, но свойство Controls требует дополнительного обсуждения. Это свойство возвращает ссылку на вложенный класс с именем ControlCollection, определенный в рамках класса Control. Вложенный тип ControlCollection содержит все элементы управления, помещенные в данную форму. Вы можете получить ссылку на эту коллекцию, чтобы "рассмотреть список" дочерних элементов формы.

// Получение доступа к вложенной коллекции ControlCollection формы.

Control.ControlCollection coll = this.Controls;

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

Таблица 21.1. Члены ControlCollection

Член Описание Add() AddRange() Используются для добавления в коллекцию нового производного от Control типа (или массива типов) Clear() Удаляет все элементы из коллекции Count Возвращает число элементов, имеющихся в коллекции GetEnumerator() Возвращает интерфейс IEnumerator для данной коллекции Remove() RemoveAt() Используются для удаления элемента из коллекции

Ввиду того, что форма поддерживает коллекцию элементов управления, в Windows Forms очень просто динамически создавать, удалять или как-то иначе обрабатывать визуальные элементы. Предположим, например, что вы хотите отключить все типы Button в данной форме (или выполнить иное подобное действие, например, изменить цвет фона всех TextBox). Для этого можно использовать ключевое слово is C#, чтобы обнаружить нужные элементы и соответственно изменить их состояние.

1 ... 186 187 188 189 190 191 192 193 194 ... 259
Перейти на страницу:
На этой странице вы можете бесплатно читать книгу ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание - Эндрю Троелсен.
Комментарии