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