Разработка приложений на языке C#. Полезные настройки. Особые спецификаторы формата, страница 39

·  ToolStrip (верху) — панель инструментов с кнопками управления. Smart Button (умная кнопка, работающая в режиме дизайна и расположенная в правом верхнем углу некоторых элементов) позволяет быстро настраивать типичные свойства элементов управления. В меню этой кнопки (для элемента ToolStrip) выберите команду InsertStandardItems. Она добавит стандартный набор кнопок. Потом вы добавите другие кнопки (для других команд).

·  DataGridView (слева вверху), данные которого привязаны (с помощью механизма DataBinding) к generic-коллекции, или списку в памяти типа BindingList<Person>. Коллекция BindingList<>лучше, чем другие стыкуется с DataGridView.

·  PropertyGrid propGrid (справа внизу), данные которого привязаны к текущему объекту класса Person. Текущий объект вычисляется с помощью объекта CurrencyManager cm. Привязка PropertyGrid производится многократно. Это происходит в обработке события CurrentChanged для объекта cm. Это делается так.

    propGrid.SelectedObject = cm.Current;

·  PictureBox pic (справа вверху), данные которого также привязаны к текущему объекту класса Person. Привязка производится однократно с помощью механизма Simple DataBinding. Ее выполняет следующий оператор.

    pic.DataBindings.Add ("Image", list, "Photo", true);

Здесь свойство Image компонента PictureBox синхронизируется со свойством Photo объектов класса Person, которые расположены в коллекции list типа BindingList<Person>. Параметр true требует выполнить форматирование.

·  Компонент ZedGraph (слева внизу). Его можно взять бесплатно с сайта www.CodeProject.com. Он предоставлен в открытом коде и умеет отображать данные двухмерных графиков. ZedGraph является прекрасным примером реализации технологии .NET (как Windows Forms, так Web Applications), а его код может служить в качестве учебного пособия.

Приведем примерную последовательность действий при выполнении задания.

·  В меню File4New выберите команду Project, в диалоге New Project, (окно Project Types) раскройте узел VisualC#, а в окне Templates выберите тип проекта WindowsFormsApplication.

·  В поле Location задайте удобный файловый путь (D:\Users\), а в поле Name имя проекта PersonList и нажмите кнопку OK.

·  Проанализируйте код стартовой заготовки. Замените имя файла Form1.cs на MainForm.cs. Студия предложит заменить и имя класса. Согласитесь с этим предложением.

Отметим следующие моменты:

·  Оконная форма является контейнером (динамической коллекцией) как компонентов, так и обычных элементов  управления (controls), которые добавляются в нее в режиме дизайна.

·  Детали их описания прячутся в файле MainForm.Designer.cs. Этот файл представляет собой часть класса MainForm.

·  Откройте этот файл и раскройте блок кода Windows Form Designer generated code, он расположен в скрываемом и раскрываемом блоке (между директивами #region-#endregion).

·  Код файла MainForm.Designer.cs не следует редактировать вручную. Лучше делать это с помощью механизма свойств, доступного в режиме дизайна, пользуясь  возможностями окна Properties.

·  Класс MainForm содержит переменную components (класса Container) и стандартный набор методов, управляющих поведением компонентов: InitializeComponent и Dispose. Если компоненты не используются (на форме присутствуют только обычные элементы вида controls), то переменную components и указанные методы можно убрать.

·  Список используемых пространств имен (директив using) оптимизирован и в него не следует включать те пространства, которые не используются приложением.

Рассмотрим, как работать с коллекцией BindingList<Person> и ее отображением DataGridView. Компонент DataGridView более удобен в использовании, чем DataGrid, или стандартный ListBox. Он позволяет производить редактирование данных по месту их размещения и эффективен не только в нашем сценарии, но и в более сложных, например, при отображении данных таблиц реляционной базы данных. Источник данных (Data Provider) для отображения в DataGridView можно выбрать как на этапе компиляции, так и на этапе выполнения. Пользователь редактирует данные в ячейках DataGridView, изменения автоматически дублируются в объекте класса BindingList<Person>.