首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在没有messagebox的情况下运行%2表单%1冻结表单%2

如何在没有messagebox的情况下运行%2表单%1冻结表单%2
EN

Stack Overflow用户
提问于 2014-12-10 15:55:48
回答 4查看 177关注 0票数 0

在我的第一个表单上,我有一个启动第二个表单的按钮。第二个表单启动一个RDP。一切正常,但是当我在表单1上收到一个messagebox-message时,我不能访问我的第二个表单,直到我关闭messagebox。如何将这两个表单分开运行?

EN

回答 4

Stack Overflow用户

发布于 2014-12-10 16:41:16

如果希望向用户显示非模态(非模态)消息,则应该创建一个表单并使用其 show 方法,而不是显示消息框。下面的简单方法创建并显示一个看起来像消息框的窗体:

代码语言:javascript
复制
public static Form ShowNonModalMessageBox(string title, string text)
{
    Form form = new Form();
    form.FormBorderStyle = FormBorderStyle.FixedDialog;
    form.MinimizeBox = false;
    form.MaximizeBox = false;
    form.Size = new Size(200, 100);
    form.StartPosition = FormStartPosition.CenterScreen;
    form.Text = title;

    form.SuspendLayout();

    Label label = new Label();
    label.Text = text;
    label.Dock = DockStyle.Fill;
    form.Controls.Add(label);

    Button okButton = new Button();
    okButton.Text = "OK";
    okButton.Dock = DockStyle.Bottom;
    okButton.Click += delegate(object sender, EventArgs e)
    {
        form.DialogResult = DialogResult.OK;
        form.Close();
    };
    form.Controls.Add(okButton);

    form.ResumeLayout();

    form.Show();
    return form;
}

然后,您可以像这样使用此方法向用户显示非模态消息:

代码语言:javascript
复制
Form messageBox = ShowNonModalMessageBox("Title", "This is the message.");
messageBox.FormClosed += messageBox_FormClosed;

private void messageBox_FormClosed(object sender, FormClosedEventArgs e)
{
    MessageBox.Show("Form closed with result: " + ((Form)sender).DialogResult.ToString());
}
票数 1
EN

Stack Overflow用户

发布于 2014-12-10 16:00:54

您应该使用Show()方法而不是ShowDialog()来启动表单。

票数 0
EN

Stack Overflow用户

发布于 2014-12-10 16:02:38

也许您使用的是ShowDialog()而不是Show(),后者将您的窗体显示为模式对话框。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27395849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档