Программирование КПК и смартфонов на .NET Compact Framework | страница 31
> // Свойство Bounds возвращает размеры и позицию SIP
> if (inputPanel1.Enabled == true)
> this.txtJump.Top = 200 — inputPanel1.Bounds.Height;
> else
> this.txtJump.Top = 200;
>}
На рис. 3.15 показан внешний вид окна тестового приложения.
Рис. 3.15. Пример работы с элементом InputPanel
В этом примере позиция текстового поля была подобрана опытным путем, но в реальных проектах разработчик может программно вычислить высоту формы, панели ввода, текстового поля и других элементов формы, чтобы более точно определить позицию сдвига.
Элемент управления DataGrid
Элемент управления >DataGrid
позволяет отображать данные в виде таблицы, как это сделано в электронной таблице MS Excel. Как и многие другие элементы управления, он имеет обрезанные возможности по сравнению с полной версией .NET Framework. Например, отключена поддержка свойства >DataMember
.
Элемент управления >DataGrid
может быть связан с источниками данных при помощи свойства >DataSource
. Рассмотрим простейший пример работы с данным элементом. Прежде всего, потребуется создать XML-файл, содержащий некоторые данные. Для примера был использован файл >artists.xml
, в котором содержится информация о некоторых известных артистов шоу-бизнеса. Файл содержит записи о фамилии, дате рождения и адресе проживания. Созданный файл нужно добавить в проект, расположить на форме элемент >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 Files\DataGrid_CS\artists.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-файла извлекаются данные, относящиеся к фамилии артиста и дате его рождения. Остальная информация игнорируется. При загрузке приложения в элемент