Вот как сделать небольшое диалоговое окно пользовательского в Windows Mobile, который выглядит следующим образом:
alt text http://www.freeimagehosting.net/uploads/b8fb5421d6.jpg
Добавить форму для вашего проекта, и установить его FormBorderStyle свойство None. Это позволяет изменять размер и расположение формы, но также означает, что у нее нет границы или заголовка, и пользователю не удастся ее переместить.
Итак, вы должны подделать все три. Самый простой способ подделать границу и строку заголовка - сделать BackColor вашей формы SystemColors.WindowFrame, а затем поместить ярлык (там, где он говорит «Диалог» на картинке) с помощью BackColor = SystemColors.Highlight и ForeColor = SystemColor.HighlightText (и полужирным шрифтом), затем поместите панель с BackColor = SystemColors.Window, где вы видите белый на картинке. Вы должны подстроить позиции и размеры метки и панели, чтобы у вас была 1-пиксельная рамка (которая является только обратным цветом вашей формы).
Чтобы включить форму тащиться вокруг своей фальшивой заголовку, добавьте этот код в форму (и, конечно, вы должны проволоки до события, тоже):
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;
}
}
Еще одна проблема заключается в том, что потому что нет реальной панели заголовка, пользователю не удастся закрыть форму.Вы должны добавить ОК (или Закрыть) кнопку, и поместить его в Click событие кнопки:
this.DialogResult = DialogResult.OK;
Обычно вы будете использовать событие мыши на строке заголовка для облегчения перетаскивания, но контроль ярлык не имеют какие-либо события мыши. С помощью этого кода вы можете захватить в любом месте формы и перетащить его, за исключением того, что панель блокирует это и делает панель заголовка единственным местом для захвата и перетаскивания.
В моем другом ответе есть более подробная информация о получении информации из пользовательских диалогов.
Обновление: на самом деле, есть только Очевидный способ закрыть безграничную форму без добавления собственной кнопки OK. Пока вы не устанавливаете свойство ControlBox своей формы False, кнопка «ОК» или «X» в верхнем правом углу экрана «Сегодня» закроет ваше диалоговое окно, даже если оно не выглядит так, как если бы оно не было на форма.
Сколько опыта у вас есть с разработкой Visual Studio, C# и winforms? – MusiGenesis 2008-11-19 17:25:32