如何让代码中的MessageBox仅执行一次,仅弹出一次提示?
实现方案
你可以通过新增一个类级别的布尔标记位,记录MessageBox是否已经弹出过,即可实现仅弹窗一次的需求,具体修改如下:
步骤1:在窗体类中新增全局标记变量
在你的窗体类的成员定义部分,加入如下代码:
// 标记空白提示弹窗是否已经弹出过,默认值为未弹出 private bool _hasShownEmptyTip = false;
步骤2:修改原有逻辑,仅在标记为未弹出时触发弹窗
修改你原来的判断逻辑如下:
if(textBox1.Text != "") { listBox1.Items.Add(textBox1.Text); textBox1.Clear(); } else { // 仅当弹窗还未弹出过的时候才触发 if (!_hasShownEmptyTip) { DialogResult click = MessageBox.Show("Info Screen", "TextBox is Empty. Do you want to add a blank space?", MessageBoxButtons.OKCancel); // 标记弹窗已经弹出过,后续不会再触发 _hasShownEmptyTip = true; if(click==DialogResult.OK) { listBox1.Items.Add(textBox1.Text); } } // 弹窗已经弹出过的情况下,直接走你需要的默认逻辑即可,比如直接跳过、或者直接加空白 }
如果你后续需要重置弹窗权限(比如其他操作执行后允许再次弹出一次),只需要在对应操作的逻辑里把_hasShownEmptyTip重新赋值为false即可。
内容的提问来源于stack exchange,提问作者PhysicsEnginering
相关产品推荐
相关产品推荐

