артистов шоу-бизнеса. Файл содержит записи о фамилии, дате рождения и адресе проживания. Созданный файл нужно добавить в проект, расположить на форме элемент DataGrid и присвоить ему имя grdArtists. В листинге 3.25 приведен код обработчика события Form1_Load.
private void Form1_Load(object sender, EventArgs e) {
Cursor.Current = Cursors.WaitCursor;
try {
// Загружаем данные DataSet
DataSet ds = new DataSet();
ds.ReadXml(@'Program FilesDataGrid_CSartists.xml');
grdArtists.DataSource = ds.Tables[0];
} catch (Exception) {
MessageBox.Show('Не могу загрузить данные в DataGrid!', this.Text);
}
// Устанавливаем стили
DataGridTableStyle ts = new DataGridTableStyle();
ts.MappingName = 'Order';
DataGridColumnStyle artistDate = new DataGridTextBoxColumn();
artistDate.MappingName = 'BirthDate';
artistDate.HeaderText = 'Дата рождения';
ts.GridColumnStyles.Add(artistDate);
DataGridColumnStyle artistName = new DataGridTextBoxColumn();
artistName.MappingName = 'ArtistName';
artistName.HeaderText = 'Артист';
artistName.Width = this.Width - artistDate.Width - 35;
ts.GridColumnStyles.Add(artistName);
grdArtists.TableStyles.Add(ts);
Cursor.Current = Cursors.Default;
}
В данном примере из XML-файла извлекаются данные, относящиеся к фамилии артиста и дате его рождения. Остальная информация игнорируется. При загрузке приложения в элемент DataGrid записываются требуемые данные. На рис. 3.16 показан внешний вид приложения.
Рис. 3.16. Пример работы с элементом DataGrid
Также стоит прочитать статью «Using the DataGrid Control in Pocket PC Applications», которую можно найти в справочной системе MSDN. В этой статье иллюстрируются различные приемы программирования, которые помогут расширить возможности данного элемента.
Элемент Splitter
Элемент управления Splitter появился только в .NET Compact Framework 2.0. В предыдущей версии его не было. Этот элемент реализует разделитель, который используется для изменения размеров закрепленных элементов управления во время выполнения программы. Элемент Splitter обычно используется вместе с элементами управления, содержащими данные переменной длины.
Стоит рассмотреть работу данного элемента на конкретном примере. На форме следует расположить графическое поле PictureBox и присвоить его свойству Dock значение Top. Затем на форме надо расположить объект Splitter и его свойству Dock тоже присвоить значение Top. Также следует расположить на форме текстовое поле TextBox. Его свойству Multiline надо присвоить значение True, а свойству Dock — значение Fill. Внешний вид получившегося приложения показан на рис. 3.17.
Рис. 3.17. Применение элемента Splitter в приложении
Даже без единой строчки написанного кода запущенное приложение будет вполне функционально. Если нужно увеличить область текстового поля для ввода новых данных, то достаточно нажать стилусом на разделителе и передвинуть его чуть выше.
Элемент MonthCalendar
Элемент управления MonthCalendar появился только в последней версии .NET Compact Framework 2.0. Данный элемент позволяет легко выбрать необходимую дату.
Для создания тестового приложения на форме надо разместить элементы MonthCalendar и Label. Метка должна получить имя lblSelectDate, а для свойства Text нужно задать значение Выбранная дата. Затем следует дважды щелкнуть на элементе monthCalendar1, чтобы задать код обработчика события DateChanged. Этот код приведен в листинге 3.26.
private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e) {
lblSelectDate.Text =
'Выбранная дата: ' + monthCalendar1.SelectionStart.ToShortDateString();
}
Теперь можно запустить приложение и выбрать любую дату из месячного календаря. Выбранная дата будет автоматически отображаться в надписи lblSelectDate, как показано на рис. 3.18.
Рис. 3.18. Выбираем дату из месячного календаря
Элемент DateTimePicker
Элемент управления DateTimePicker также является новым элементом, который появился в .NET Compact Framework 2.0. Он позволяет выбирать не только дату, но и время.
На форме надо разместить элемент DateTimePicker и две текстовые метки Label, в которых будут отображаться дата и время. Затем нужно дважды щелкнуть на элементе DateTimePicker, чтобы задать код обработчика события
