且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

ui - C#等待按钮被按下再继续执行。

更新时间:2022-12-26 18:53:06

方法一

采用 Dialog(对话框) 的方法,比如 MesssageBox.Show() 就是一种 Dialog。Dialog 的特点是会阻塞父窗口的代码(调用代码),直到这个对话框被关闭。普通的 Form 对象可以通过 ShowDialog() 来以 Dialog 的形式显示,所以不一定使用 MessageBox.Show()

方法二

这种方法是直接使用当前 Form 中的按钮来触发,但是需要分解逻辑,因为按钮的触发是由用户控制,用户动作是不可控的,所以需要严格的分析和拆分逻辑来处理。

比如你期望的

for (int i = 0; i < 10; i++) {
   foo(i);
   // 期望等待按钮
}

可以这样分解,

按钮1,触发 for 循环的 i == 0 的操作
按钮2,触发 for 循环的后续操作,直到 i == 10
i 需要由两个按钮访问,所以不能是循环变量,必须是一个成员变量

class MyForm : Form {
    int i = 0;
    
    void Button1_Click(object sender, EventArgs e) {
        if (i == 0) {
            foo(0);
        }
    }
    
    
    void Button2_Click(object sender, EventArgs e) {
        if (i > 0 && i < 10) {
            foo(i++);
        }
    }
}

不过我觉得你应该是以调试为目的,所以采用方法一比较好。