我希望有一个简单的自定义对话框,如消息框,具有标签和TextBox.如果有一种简单的方法可以做到这一点,抱歉!我真的不太熟悉对话的东西.
谢谢你的帮助,伙计们!
以下是如何在Windows Mobile中创建一个小型自定义对话框,如下所示:
alt text http://www.freeimagehosting.net/uploads/b8fb5421d6.jpg
将表单添加到项目中,并将其FormBorderStyle属性设置为None.这样可以调整表单的大小和位置,但也意味着它没有边框或标题栏,并且用户无法移动它.
所以你必须假装这三个.伪造边框和标题栏的最简单方法是制作表单SystemColors.WindowFrame的BackColor,然后使用BackColor = SystemColors.Highlight和ForeColor = SystemColor.HighlightText放置一个标签(图中所示的"Dialog") (并加粗字体),然后放置一个带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(或关闭)按钮,并将其放在按钮的Click事件中:
this.DialogResult = DialogResult.OK;
通常,您将在标题栏上使用鼠标事件以方便拖动,但标签控件没有任何鼠标事件.使用此代码,您实际上可以抓住表单上的任何位置并拖动它,除了面板阻止此操作并使标题栏成为唯一可以抓取和拖动的位置.
我的另一个答案有关于从自定义对话框中获取信息的更多详细信息.
更新:实际上,没有明显的方法可以在不添加自己的OK按钮的情况下关闭无边框表单.只要你没有将表单的ControlBox属性设置为False,今日屏幕右上角的OK或X按钮将关闭你的对话框,即使它看起来不像它,因为它实际上不在形成.