如何通过对话sult返回值.好的,不关闭表格

本文关键字:表格 好的 何通过 对话 sult 返回值 | 更新日期: 2023-09-27 18:14:05

我创建了一个带有打印预览的打印工具。打印预览是通过表单实现的。我想让用户点击打印按钮打印文档,而预览表单不关闭。

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

如何通过对话sult返回值.好的,不关闭表格

你不能。

DialogResult用于模态窗口。模态窗口基本上劫持了底层的UI消息循环,这使得它们相对于调用者是同步的。

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

现在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");