gpt4 book ai didi

c# - 在 winmobile 中带有文本字段的自定义对话框

转载 作者:太空狗 更新时间:2023-10-30 00:13:26 25 4
gpt4 key购买 nike

我希望有一个简单的自定义对话框,例如消息框,它有一个标签和一个文本框。如果有一个简单的方法可以做到这一点,对不起!我真的不太精通对话的东西。

谢谢大家的帮助!

最佳答案

下面是如何在 Windows Mobile 中创建一个小的自定义对话框,如下所示:

alt text http://www.freeimagehosting.net/uploads/b8fb5421d6.jpg

向您的项目添加一个表单,并将其 FormBorderStyle 属性设置为 None。这允许调整表单的大小和位置,但也意味着它没有边框或标题栏,用户无法移动它。

所以你必须伪造这三个。伪装边框和标题栏的最简单方法是制作表单 SystemColors.WindowFrame 的 BackColor,然后放置一个标签(图片中显示“对话框”的地方),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;

通常您会在标题栏上使用鼠标事件来方便拖动,但标签控件没有任何鼠标事件。使用这段代码,您实际上可以捕获表单上的任何地方并拖动它,除了面板阻止它并使标题栏成为唯一可以捕获和拖动的地方。

我的另一个答案有更多关于从自定义对话框中获取信息的详细信息。

更新:实际上,没有显而易见的方法可以在不添加您自己的“确定”按钮的情况下关闭无边框窗体。只要您不将窗体的 ControlBox 属性设置为 False,“今日”屏幕右上角的“确定”或“X”按钮就会关闭您的对话框,即使它看起来不像会关闭,因为它实际上不在形式。

关于c# - 在 winmobile 中带有文本字段的自定义对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/302680/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com