C# 显示要求用户继续或中止的对话框

C# 显示要求用户继续或中止的对话框,c#,winforms,C#,Winforms,我是C#的新手,很抱歉问了一个非常简单的问题 我有两门课,Form1.cs和Testing.cs 我在Testing.cs中编写了一个函数,它有许多处理步骤。我想在每一步,用户必须确认他们想继续处理下一步。如果他们不想这样做,他们单击Abort停止处理。因为我不能在类测试中调用对话框结果来显示对话框,所以我该怎么做 在类测试中,在每一个处理过的步骤之后,我都会更新它的状态。我不知道如何将此字符串立即发送到表单以在文本框中显示状态 非常感谢您的帮助。您的第一点可以通过MessageBox轻松解决。

我是C#的新手,很抱歉问了一个非常简单的问题

我有两门课,
Form1.cs
Testing.cs

  • 我在Testing.cs中编写了一个函数,它有许多处理步骤。我想在每一步,用户必须确认他们想继续处理下一步。如果他们不想这样做,他们单击Abort停止处理。因为我不能在类
    测试中调用
    对话框结果
    来显示对话框,所以我该怎么做

  • 在类测试中,在每一个处理过的步骤之后,我都会更新它的状态。我不知道如何将此字符串立即发送到表单以在文本框中显示状态


  • 非常感谢您的帮助。

    您的第一点可以通过MessageBox轻松解决。Show包含显示“是/否”选项所需的所有功能

    DialogResult dr = MessageBox.Show("Do you want to continue?", 
                                       "Your App Title",
                                       MessageBoxButtons.YesNo, 
                                       MessageBoxIcon.Question,
                                       MessageBoxDefaultButton.Button1);
    
    if(dr == DialogResult.No)
        return;
    
    第二个问题有点复杂,但可以使用委托来解决

    假设您的Form1类调用测试类,并传递一个委托,测试类每次需要通知Form1类某些事情时都应该调用该委托

    你在Form1课上写

      Testing t = new Testing();
      t.MultipleStepsOperation((string status) => 
               { 
                   MessageBox.Show("Testing class calls Form class with status=" + status);
               });
    
    在测试类中,您将收到表单类传递的委托

      public void MultipleStepsOperation(Action<string> formNotifier)
      {
          string status = "Initialize ops";
          if(formNotifier != null)
             // Invoke is not required, just for clarity
             // formNotifier(status); // the same as below...
             formNotifier.Invoke(status);
          ....
    
          status = "Executing step 1";
          if(formNotifier != null)
             formNotifier.Invoke(status);
    
          status = "Executing step 2";      
          if(formNotifier != null)
             formNotifier.Invoke(status);
          ....
    
      }
    
    public void multiplestpsoperation(操作表单通知程序)
    {
    string status=“初始化操作”;
    如果(formNotifier!=null)
    //不需要调用,只是为了清楚起见
    //formNotifier(状态);//如下所示。。。
    formNotifier.Invoke(状态);
    ....
    status=“正在执行步骤1”;
    如果(formNotifier!=null)
    formNotifier.Invoke(状态);
    status=“正在执行步骤2”;
    如果(formNotifier!=null)
    formNotifier.Invoke(状态);
    ....
    }
    
    关于第一点,调用MessageBox.Show有什么问题?这似乎是许多问题的重复,这些问题询问如何将值传递给表单。有很多可能的解决方案,其中许多比使用委托更容易。