如何实现,弹出一个提示框后,如果用户不单击,以后不会响应?
---------------------------------------
我的思路,我在窗体上放一个计时器(小钟表),
我想实现只要到了指定时间,就每隔1秒钟弹出一个提示框,但是用户如果不响应,就不再继续弹出,如果用户按上确定键进行响应了,并且没有关闭检测,则到秒钟再次弹出提示框。现在的问题是,如果到了指定时间,就每一秒就弹一个提示框,用户不响应,应一直连着弹。
我如何做到用户不响应的话,就弹出一个放在屏幕上,目的是让用户看到就行了。比如我下面的代码,就不行,        private void timer1_Tick(object sender, EventArgs e)
        {
            string strtimeset;
            strtimeset = txt1.Text.Trim();
            MessageBox.Show(时间到了,请打卡");        }

解决方案 »

  1.   


    if (MessageBox.Show("警告?", "警告", MessageBoxButtons.YesNo) == DialogResult.No)
    {
      
    }
    else
    {
      
    }
    把代码都放在if里
      

  2.   

    自己弄一个提示框啊,放个label和button,再重写个构造方法或public方法接收这个提示信息.如果提示信息是固定,这个就可以省了,然后每次要弹出时 先检测一下这个窗体是否已打开就行.
    其实可以在按确定时hide,需要时再show.
      

  3.   

    在timer中用MessageBox的话,好像每一次会弹一个出来,不理前面的有没有关.
      

  4.   

    而且MessageBox不关闭,是不能操作程序的
      

  5.   


        public partial class Form1 : Form
        {
            Form dialogFM = new Form();        public Form1()
            {
                InitializeComponent();
            }        private void Form1_Load(object sender, EventArgs e)
            {
                dialogFM = new Form();
                dialogFM.Width = 300;
                dialogFM.Height = 200;
                dialogFM.FormBorderStyle = FormBorderStyle.FixedSingle;
                dialogFM.MinimizeBox = false;
                dialogFM.MaximizeBox = false;
                dialogFM.StartPosition = FormStartPosition.CenterScreen;
                //
                Label lbl = new Label();
                lbl.Text = "时间到了,请打卡";
                lbl.TextAlign = ContentAlignment.MiddleCenter;
                lbl.Font = new Font(new FontFamily("宋体"), 18);
                lbl.Dock = DockStyle.Top;
                dialogFM.Controls.Add(lbl);
                //
                CheckBox chk = new CheckBox();
                chk.Text = "关闭检测";
                chk.Location = new Point(20, 50);
                chk.CheckedChanged += new EventHandler(chk_CheckedChanged);
                dialogFM.Controls.Add(chk);
                //
                Button btn = new Button();
                btn.Text = "确定";
                btn.DialogResult = DialogResult.OK;
                btn.Location = new Point((dialogFM.Width - btn.Width) / 2, 100);
                dialogFM.Controls.Add(btn);
            }        void chk_CheckedChanged(object sender, EventArgs e)
            {
                dialogFM.Tag = ((CheckBox)sender).Checked;
            }        private void timer1_Tick(object sender, EventArgs e)
            {
                if (dialogFM.Tag == null || !(bool)dialogFM.Tag)
                {
                    if (!dialogFM.IsHandleCreated && dialogFM.ShowDialog() == DialogResult.OK)
                    {
                        //todo:
                    }
                }
            }
        }
      

  6.   

    定时器关
    messagebox() 
    定时器开
      

  7.   

    不是的,实际上,我会让一分钟检测一次,因为时钟没有办法设置太长时间,最长一分钟吧。
    我的目的是不想让人烦。只要用户不关,就一直放在那里。谁知道,这个messagbox会一直弹下去。vb就不会这样呀。晕
      

  8.   

    对对,就是这个最简单的if    else   来解决
      

  9.   

    我想你不用Show,而改用ShowDialog会成功的。
      

  10.   


    你说错了,我开始也是这样理解的,但是实际情况不是这样的。
    虽然弹出对话框了,但是计时器在工作,所以尽管不关这个对话框,后面的操作会继续。
    定时器并不管你,是不是关了对话框。谢谢各位,我发现最好的办法,就是先关了的计时器,messagebox.show()后在打开计时器,这是好办法!