在类方法中调用对话框

时间:2012-06-12 18:58:09

标签: c# .net wpf

我在WPF(使用.Net 4.0)应用程序中有一个类函数,该应用程序通过同步过程运行,该过程需要在其中停留几个等待用户准备就绪。所以在程序中我需要弹出一些只是暂停程序的对话框,直到用户点击“确定”。

实施此方法的最简洁方法是什么?

如果有一些方法可以让函数指示MainWindow调用对话框,那么我对使用WPF对话框弄乱类函数犹豫不决。或者我不应该担心这个?

2 个答案:

答案 0 :(得分:1)

在您确定更好的重构方法之前,我会使用以下内容。在不了解任何特定架构的情况下:

void MyLongProcedure() {
    // do some stuff
    if(GetDialog() == DialogResult.OK) { }

    // do some more stuff
    if(GetDialog() == DialogResult.OK) { }
}

DialogResult GetDialog() {
    return myDialog.ShowDialog();
}

如果一个选项来暂停该过程,那么您可以添加DialogResult.Cancel的检查并对长程序实现正常退出。

答案 1 :(得分:1)

很难给出一个精确的答案,没有关于你的应用程序的更多细节,但我会使用类似下面的代码(代码可能实际上不会按原样编译)

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