代码结构如下:
private void foo(int x) {
// 根据x更新UI
// 然后等待,直到按钮btn被按下
}
for (int i = 0; i < 10; i++) {
foo(i);
// 期望看到UI一步步变化
}
问题是:等待按钮被按下的功能怎么做。效果应该像弹出MessageBox一样,直到用户点击OK按钮,MessageBox消失,然后原来的工作继续。
代码结构如下:
private void foo(int x) {
// 根据x更新UI
// 然后等待,直到按钮btn被按下
}
for (int i = 0; i < 10; i++) {
foo(i);
// 期望看到UI一步步变化
}
问题是:等待按钮被按下的功能怎么做。效果应该像弹出MessageBox一样,直到用户点击OK按钮,MessageBox消失,然后原来的工作继续。
2.3k 阅读
1 回答834 阅读
229 阅读
方法一
采用
Dialog
(对话框) 的方法,比如MesssageBox.Show()
就是一种 Dialog。Dialog 的特点是会阻塞父窗口的代码(调用代码),直到这个对话框被关闭。普通的Form
对象可以通过ShowDialog()
来以 Dialog 的形式显示,所以不一定使用MessageBox.Show()
。方法二
这种方法是直接使用当前
Form
中的按钮来触发,但是需要分解逻辑,因为按钮的触发是由用户控制,用户动作是不可控的,所以需要严格的分析和拆分逻辑来处理。比如你期望的
可以这样分解,
按钮1,触发
for
循环的i == 0
的操作按钮2,触发
for
循环的后续操作,直到i == 10
i
需要由两个按钮访问,所以不能是循环变量,必须是一个成员变量不过我觉得你应该是以调试为目的,所以采用方法一比较好。