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