如何通过DialogResult.OK返回值,而不是关闭表单

时间:2015-09-23 14:22:23

标签: c# forms dialogresult

我已经使用打印预览创建了一个打印工具。打印预览由表单完成。我想让用户在预览表单未关闭时单击打印按钮来打印文档。

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

2 个答案:

答案 0 :(得分:0)

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

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;
    }
}

然后使用:

调用它
 int MyDialogValue = MyDialog.ShowDialog("Test", "123");

答案 1 :(得分:0)

你不能。

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

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