使用计时器在Messagebox中启用按钮

时间:2016-10-04 03:38:00

标签: c# winforms messagebox

当用户点击按钮时,我会弹出一个消息框。当用户单击是时,它运行insert函数。

我想要的是在messagebox弹出时添加或开始倒计时,默认yes button被禁用。在5 second yes button之后,成为enable并准备好按用户点击。

messagebox

  if (MessageBox.Show("log", "test", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {                  
                insert();
            }

1 个答案:

答案 0 :(得分:5)

根据评论中的建议,您需要拥有自己的此功能实现。下面是您需要修改普通表单以使其显示为对话框的部分代码:

  1. 将新的Form添加到您的项目中。打开porperties选项卡。将属性设置为以下 2

  2. 修改设计器中的表单,将以下属性更改为给定值:

    this.AcceptButton = this.btnYes;//To simulate clicking *ENTER* (Yes)
    this.CancelButton = this.button2; //to close form on *ESCAPE* button
    this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
    this.MaximizeBox = false;
    this.MinimizeBox = false;
    //FROM CODEPROJECT ARTICLE LINK
    this.ShowInTaskBar = false;
    this.StartPosition = CenterScreen;
    
  3. 添加计时器以形成。将其间隔设置为5000(5秒)。编写代码以在Shown形式的事件上启动计时器:

    private void DialogBox_Shown(object sender, EventArgs e)
    {
        timer1.Start();
    }
    
  4. 处理计时器滴答声:

    public DialogBox()
    {
        InitializeComponent();
    
        //bind Handler to tick event. You can double click in 
        //properrties>events tab in designer
        timer1.Tick += Timer1_Tick;
    }
    
    private void Timer1_Tick(object sender, EventArgs e)
    {
        btnYes.Enabled = true;
        timer1.Stop();
    }
    
  5. 设置按钮处理程序:

    private void btnYes_Click(object sender, EventArgs e)
    {
        DialogResult = DialogResult.Yes;
    }
    
  6. 您可以在此处显示此自定义消息框,以检查是否点击了YesNo,如下所示:

    var d=new DialogBox();
    var result=d.ShowDialog();
    
    if(result==DialogResult.Yes)
    //here you go....