winmobile中的文本字段的自定义对话框
我期待有一个简单的自定义对话框,就像一个消息框,有一个标签和一个文本框。如果有一个简单的方法可以做到这一点,对不起!我真的不熟悉对话的东西。winmobile中的文本字段的自定义对话框
感谢您的帮助,伙计!
下面是如何在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;
通常你会使用标题栏上的鼠标事件,以方便拖动,但标签控制不有任何鼠标事件。使用这段代码,你实际上可以在表单上的任意位置抓取并拖动它,除了面板阻止了这一点,并使标题栏成为唯一抓取和拖动的地方。
我的其他答案有更多关于从自定义对话框中获取信息的细节。
更新:实际上,只有没有明显方式来关闭无边界窗体,而无需添加您自己的确定按钮。只要您不将表单的ControlBox属性设置为False,则Today屏幕右上角的OK或X按钮将关闭对话框,即使它看起来不像它,因为它实际上并不在形成。
我假设你基本上要返回用户输入的字符串自定义对话框。一种方法是将Microsoft.VisualBasic的引用添加到您的项目中,从而使您可以访问InputBox方法,该方法基本上是一个带有文本框的消息框。但这并不好玩,我也不确定它会在智能手机上工作。
要展开自己的作品,只需在表单中添加一个表单(名为CustomDialog),然后将一个文本框(textBox1),一个标签(label1)和一个按钮(标记为“OK”)拖到其上。
要设置标签文本,将参数添加到窗体的构造是这样的:
public CustomDialog(string textCaption)
{
label1.Text = textCaption;
}
为了揭露输入的文本给调用者,该代码添加到窗体:
public override string Text
{
get
{
return textBox1.Text;
}
}
在确定按钮的单击事件中,输入以下代码:
this.DialogResult = DialogResult.OK; // this will close the form, too
要在主窗体中使用此对话框,请将cre吃了这种形式的一个实例,显示它,请检查OK按钮被点击,然后读取它的Text属性(返回用户输入的内容),像这样:
using (CustomDialog dialog = new CustomDialog("What is your name"))
{
if (dialog.ShowDialog(this) == DialogResult.OK)
{
string enteredText = dialog.Text;
}
}
你可以得到票友,但这些是基础知识。
如果你想要一个超级简单的,但[T]丑陋的解决方案,您可以在您的项目Microsoft.VisualBasic程序,它可以让你使用VB功能的InputBox这样的引用:
string s = Microsoft.VisualBasic.Interaction.InputBox("prompt text",
"title text", "default value", 0, 0);
的对话框占据整个屏幕,但使用起来很简单。但正如我所提到的那样令人难以置信的难看。
您对Visual Studio,C#和winforms开发有多少经验? – MusiGenesis 2008-11-19 17:25:32