C# 中的消息框按钮访问

Messagebox Buttons access in C#

我在我的代码中使用了计时器,假设当计时器停在 0 时,消息框提示我您超时并显示两个按钮 "RETRY" 和 "CANCEL"。指导我使用功能,即当我按下消息框上的 "CANCEL" 按钮时,它会退出整个 windows 表单。 下面是 timer_tick 事件的 if 条件:

    int duration = 10;

    private void timer1_Tick(object sender, EventArgs e)
    {
        //shows message that time is up!
       duration--;
       timer_label1.Text = duration.ToString();
       if (duration == 0)
       {
           timer1.Stop();
           MessageBox.Show("You Timed Out", "Oops", MessageBoxButtons.RetryCancel, MessageBoxIcon.Stop);

       } 
    }

    private void start_game_button19_Click(object sender, EventArgs e)
    {
        timer1.Enabled = true;
        timer1.Start();
    }

enter image description here

要使用 MessageBox 并根据单击的按钮采取不同的操作,必须将 Show 调用的结果分配给一个变量。 Show returns 一个 DialogResult 值,您可以使用它来确定单击了哪个按钮。

var retryOrCancel = MessageBox.Show(
    text: "You Timed Out",
    caption: "Oops",
    buttons: MessageBoxButtons.RetryCancel,
    icon: MessageBoxIcon.Stop
);

switch (retryOrCancel)
{
    case DialogResult.Cancel:
    this.Close();
    break;
    case DialogResult.Retry:
    StartGame();
    break;
}

private void start_game_button19_Click(object sender, EventArgs e)
{
    StartGame();
}

private void StartGame() 
{
    timer1.Enabled = true;
    timer1.Start();
}

您可以在下面的代码中执行类似的操作:

var result =  MessageBox.Show(
              "You Timed Out",
              "Oops",
              MessageBoxButtons.RetryCancel,
              MessageBoxIcon.Stop);

if (result == DialogResult.Cancel) {
    this.Close();
}