在类方法中调用对话框

本文关键字:对话框 调用 类方法 | 更新日期: 2023-09-27 18:37:00

>我在 WPF(使用 .Net 4.0)应用程序中有一个类函数,它通过同步过程运行,该过程需要在其中进行几次停止以等待用户准备就绪。因此,在过程中,我需要弹出一些对话框,这些对话框只是暂停该过程,直到用户单击"确定"。

实现这一点的最干净方法是什么?

如果有

某种方法可以让函数向 MainWindow 发出信号以调用对话框,我犹豫是否要用 WPF 对话框混淆类函数。还是我不应该担心这个?

在类方法中调用对话框

我会使用以下方法,直到您确定更好的重构方法。在不知道您的任何特定架构的情况下:

void MyLongProcedure() {
    // do some stuff
    if(GetDialog() == DialogResult.OK) { }
    // do some more stuff
    if(GetDialog() == DialogResult.OK) { }
}
DialogResult GetDialog() {
    return myDialog.ShowDialog();
}

如果有停止该过程的选项,则可以添加DialogResult.Cancel检查并实现对长过程的正常退出。

在没有关于您的应用程序的更多详细信息的情况下,很难给出准确的答案,但我会选择如下所示的内容(代码实际上可能无法按原样编译)

public class WaitForUserProcedureImpl : IWaitForUserProcedure
{
    public void DoSomething(Action pause)
    {
        // do stuff
        pause(); // pause
        // do more stuff
        // ....
        pause();
    }
}
public class MainWindow: Window
{
    private void button_click(object sender)
    {
        WaitForUserProcedureImpl proc = new WaitForUserProcedureImpl();
        Action myPauseAction = new Action(
            ()=>
            {
                MessageBox.Show("Press ok to continue","Press ok to continue",MessageBoxButtons.OK);
            }
        );
        proc.DoSomething(myPauseAction);
    }
}