当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《winmobile中带有文本字段的自定义对话框》经验,为你挑选了1个好方法。

我希望有一个简单的自定义对话框,如消息框,具有标签和TextBox.如果有一种简单的方法可以做到这一点,抱歉!我真的不太熟悉对话的东西.

谢谢你的帮助,伙计们!



1> MusiGenesis..:

以下是如何在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按钮将关闭你的对话框,即使它看起来不像它,因为它实际上不在形成.

推荐阅读
吻过彩虹的脸_378
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有