首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过不关闭表单来通过DialogResult.OK返回值

如何通过不关闭表单来通过DialogResult.OK返回值
EN

Stack Overflow用户
提问于 2015-09-23 22:22:23
回答 2查看 859关注 0票数 1

我创建了一个带有打印预览的打印工具。打印预览是按表单进行的。我想让用户在预览表单未关闭时单击打印按钮来打印文档。

如何将DialogResult.OK返回到打印工具以防止表单消失?

EN

回答 2

Stack Overflow用户

发布于 2015-09-23 22:29:12

你不能这么做。

DialogResult与模式窗口一起使用。模式窗口基本上劫持了底层的UI消息循环,这使得它们与调用者保持同步。

如果您需要在保持对话框模式的同时使用打印预览来启动打印,只需给它一种启动打印的方法,而不是让调用者对返回的DialogResult做出反应。最简单的方法可能是简单地将一个Action委托传递给对话框-当按下OK时,您调用该委托。

票数 1
EN

Stack Overflow用户

发布于 2015-09-23 22:28:53

在C#中没有像我现在这样的功能。但是,您可以创建自定义对话框来执行此操作。

代码语言:javascript
复制
public static class MyDialog
{
    public static int ShowDialog(string text, string caption)
    {
        Form prompt = new Form();
        prompt.Width = 500;
        prompt.Height = 100;
        prompt.Text = caption;
        Label textLabel = new Label() { Left = 50, Top=20, Text=text };
        NumericUpDown inputBox = new NumericUpDown () { Left = 50, Top=50, Width=400 };
        Button confirmation = new Button() { Text = "Ok", Left=350, Width=100, Top=70 };

        confirmation.Click += (sender, e) => { //YOUR FUNCTIONALITY };

        prompt.Controls.Add(confirmation);
        prompt.Controls.Add(textLabel);
        prompt.Controls.Add(inputBox);
        prompt.ShowDialog();

        return (int)inputBox.Value;
    }
}

然后使用以下命令调用它:

代码语言:javascript
复制
 int MyDialogValue = MyDialog.ShowDialog("Test", "123");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32742203

复制
相关文章

相似问题

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