Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] окошко с вопросом (типа наг) (http://forum.oszone.net/showthread.php?t=183942)

Efsey 26-08-2010 20:15 1482444

окошко с вопросом (типа наг)
 
Здрасте. Подскажите как можно реализовать такую идею:

при запуске программы появляется второе окошко (вроде такие наг называются), где две кнопки "ок" и "отмена", причем на "ок" идет обратный отсчет.
По окончании отсчета (если ничего не нажали) окошко закрывается и запускает функцию клика основного окна.
Если нажата "отмена", то наг просто закрывается.

самое главное-как отсчет на кнопке сделать?

Casper-SC 26-08-2010 23:04 1482565

Цитата:

Цитата Efsey
запускает функцию клика основного окна »

Это как понять?

Если я правильно понял о чём речь, то:

Ну это не имоверно просто :) Вот слепил по быстрому. Останется доделать что нужно.
Код:

            FormMsg frm = new FormMsg("Заголовок", "Сообщение", 10, ElapsedTimeButton.btnCancel);
            if (frm.ShowDialog(this) == System.Windows.Forms.DialogResult.OK)
            {
                MessageBox.Show("Результат - ОК");
            }
            else
            {
                MessageBox.Show("Результат - Отмена");
            }

Код:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WinFormsLesson
{
    public enum ElapsedTimeButton
    {
        btnCancel, btnOk
    }

    public partial class FormMsg : Form
    {
        /// <summary>
        /// Таймер закрытия окна
        /// </summary>
        Timer timerClose = new Timer();
        /// <summary>
        /// Переменная счётчик
        /// </summary>
        int closeTime;
        /// <summary>
        /// Определяет какая кнопка будет истекать
        /// </summary>
        ElapsedTimeButton btnElapsed;
       
        public FormMsg(String Title, String TextMessage, int timeClose, ElapsedTimeButton btn)
        {
            InitializeComponent();
            this.btnOK.DialogResult = System.Windows.Forms.DialogResult.OK;
            this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
            this.CancelButton = this.btnCancel;
            this.Text = Title;
            this.MaximizeBox = false;
            this.MinimizeBox = false;
            this.ControlBox = false;

            timerClose.Interval = 1000;
            timerClose.Tick += new EventHandler(timerClose_Tick);
            timerClose.Start();
            closeTime = timeClose;
            this.btnElapsed = btn;
            this.lblMessage.Text = TextMessage;

            switch (btnElapsed)
            {
                case ElapsedTimeButton.btnOk: this.btnOK.Text = "ОК" + " (" + (closeTime.ToString()) + ")";
                    break;
                case ElapsedTimeButton.btnCancel: this.btnCancel.Text = "Отмена" + " (" + (closeTime.ToString()) + ")";
                    break;
            }
        }

        void timerClose_Tick(object sender, EventArgs e)
        {
            if (closeTime > 0)
            {
                closeTime--;
                switch (btnElapsed)
                {
                    case ElapsedTimeButton.btnOk: this.btnOK.Text = "ОК" + "(" + (closeTime.ToString()) + ")";
                        break;
                    case ElapsedTimeButton.btnCancel: this.btnCancel.Text = "Отмена" + "(" + (closeTime.ToString()) + ")";
                        break;
                }
            }
            else
            {
                switch (btnElapsed)
                {
                    case ElapsedTimeButton.btnOk: this.DialogResult = System.Windows.Forms.DialogResult.OK;
                        break;
                    case ElapsedTimeButton.btnCancel: this.DialogResult = System.Windows.Forms.DialogResult.Cancel;
                        break;
                }
                timerClose.Stop();
                this.Close();
            }
        }

        private void btnOK_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnCancel_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}



Время: 12:41.

Время: 12:41.
© OSzone.net 2001-