Как и любое другое пространство имен, System.Windows.Forms компонуется из различных классов, структур, делегатов, интерфейсов и перечней. Хотя различие между консольным (CUI) и графическим (GUI) интерфейсами, на первый взгляд, кажется подобным различию между ночью и днем, фактически для создания приложения Windows Forms необходимо только освоение правил манипуляции новым множеством типов с использованием того синтаксиса CIL, который вы уже знаете. С высокоуровневой точки зрения, сотни типов пространства имен System.Windows.Forms можно объединить в следующие большие категории.
• Базовая инфраструктура. Это типы, представляющие базовые операции программы .NET Forms (Form, Application и т.д.), а также различные типы, обеспечивающие совместимость с разработанными ранее элементами управления ActiveX.
• Элементы управления. Все типы, используемые для создания пользовательского интерфейса (Button, MenuStrip, ProgressBar, DataGridView и т.д.), являются производными базового класса Control. Элементы управления конфигурируются в режиме проектирования и оказываются видимыми (по умолчанию) во время выполнения.
• Компоненты. Это типы, не являющиеся производными базового класса Control, но тоже предлагающие визуальные инструменты (ToolTip, ErrorProvider и т.д.) для программ .NET Forms. Многие компоненты (например, Timer) во время выполнения невидимы, но они могут конфигурироваться визуально в режиме проектирования.
• Диалоговые окна общего вида. Среда Windows Forms предлагает целый ряд стандартных заготовок диалоговых окон для выполнения типичных действий (OpenFileDialog, PrintDialog и т.д.). Кроме того, вы можете создавать свои собственные пользовательские диалоговые окна, если стандартные диалоговые окна по какой-то причине вам не подойдут.
Поскольку общее число типов в System.Windows.Forms намного больше 100, кажется нерациональным (даже с точки зрения экономии бумаги) предлагать здесь описание всех элементов семейства Windows Forms. В табл. 19.1 описаны наиболее важные из типов System.Windows.Forms, предлагаемых в .NET 2.0 (все подробности можно найти в документации .NET Framework 2.0 SDK).
Таблица 19.1. Базовые типы пространства имен System.Windows.Forms