окошко с вопросом (типа наг)
Здрасте. Подскажите как можно реализовать такую идею:
при запуске программы появляется второе окошко (вроде такие наг называются), где две кнопки "ок" и "отмена", причем на "ок" идет обратный отсчет.
По окончании отсчета (если ничего не нажали) окошко закрывается и запускает функцию клика основного окна.
Если нажата "отмена", то наг просто закрывается.
самое главное-как отсчет на кнопке сделать?
|
Цитата:
Цитата 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.
© OSzone.net 2001-