winmobile中的文本字段的自定义对话框

问题描述:

我期待有一个简单的自定义对话框,就像一个消息框,有一个标签和一个文本框。如果有一个简单的方法可以做到这一点,对不起!我真的不熟悉对话的东西。winmobile中的文本字段的自定义对话框

感谢您的帮助,伙计!

+0

您对Visual Studio,C#和winforms开发有多少经验? – MusiGenesis 2008-11-19 17:25:32

下面是如何在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); 

的对话框占据整个屏幕,但使用起来很简单。但正如我所提到的那样令人难以置信的难看。