首页 > C#等待按钮被按下再继续执行。

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

代码结构如下:

private void foo(int x) {
    // 根据x更新UI
    // 然后等待,直到按钮btn被按下
}

for (int i = 0; i < 10; i++) {
    foo(i);
    // 期望看到UI一步步变化
}

问题是:等待按钮被按下的功能怎么做。效果应该像弹出MessageBox一样,直到用户点击OK按钮,MessageBox消失,然后原来的工作继续。


楼上所说正解。


可以在窗体类添加一个变量,然后添加按钮按下事件,在事件内做判断就可以了


方法一

采用 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++);
        }
    }
}

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

【热门文章】
【热门文章】