Программирование КПК и смартфонов на .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.

Листинг 3.25

>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-файла извлекаются данные, относящиеся к фамилии артиста и дате его рождения. Остальная информация игнорируется. При загрузке приложения в элемент