Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Новый участник


Сообщения: 12
Благодарности: 1

Профиль | Отправить PM | Цитировать


Цитата 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();
        }
    }
}

Последний раз редактировалось Casper-SC, 27-08-2010 в 00:03. Причина: Немного доработал код

Это сообщение посчитали полезным следующие участники:

Отправлено: 23:04, 26-08-2010 | #2