Вот как сделать небольшое настраиваемое диалоговое окно в Windows Mobile, которое выглядит следующим образом:
альтернативный текст http://www.freeimagehosting.net/uploads/b8fb5421d6.jpg
Добавьте форму в ваш проект и установите для свойства FormBorderStyle значение None. Это позволяет изменять размеры и расположение формы, а также означает, что у нее нет рамки или заголовка, и пользователь не может ее переместить.
Так что вы должны подделать все три. Самый простой способ подделать границу и строку заголовка - сделать BackColor вашей формы SystemColors.WindowFrame, а затем поместить метку (где на рисунке написано «Диалог») с BackColor = SystemColors.Highlight и ForeColor = SystemColor.HighlightText. (и жирный шрифт), затем поместите панель с BackColor = SystemColors.Window, где вы видите белый цвет на картинке. Вам нужно изменить положение и размеры метки и панели, чтобы у вас была граница в 1 пиксель (это просто BackColor вашей формы, просвечивающий).
Чтобы позволить перетаскиванию формы ее поддельным заголовком, добавьте этот код в форму (и, конечно, вам также нужно связать события):
private bool _Moving = false;
private Point _Offset;
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
_Moving = true;
_Offset = new Point(e.X, e.Y);
}
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
if (_Moving)
{
Point newlocation = this.Location;
newlocation.X += e.X - _Offset.X;
newlocation.Y += e.Y - _Offset.Y;
this.Location = newlocation;
}
}
private void Form1_MouseUp(object sender, MouseEventArgs e)
{
if (_Moving)
{
_Moving = false;
}
}
Еще одна проблема заключается в том, что, поскольку в действительности нет заголовка, пользователь не может закрыть форму. Вы должны добавить кнопку OK (или Закрыть) и поместить ее в событие нажатия кнопки:
this.DialogResult = DialogResult.OK;
Обычно вы бы использовали событие мыши в строке заголовка для облегчения перетаскивания, но элемент управления надписью не имеет никаких событий мыши. С помощью этого кода вы можете фактически захватить любое место на форме и перетащить его, за исключением того, что панель блокирует это и делает строку заголовка единственным местом для захвата и перетаскивания.
Мой другой ответ содержит более подробную информацию о получении информации из пользовательских диалогов.
Обновление: на самом деле, нет только очевидного способа закрыть форму без полей без добавления собственной кнопки ОК. Пока вы не установите для свойства формы ControlBox значение False, кнопка «ОК» или «X» в верхнем правом углу экрана «Сегодня» закроет диалоговое окно, даже если оно не будет выглядеть так, как на самом деле на форма.