У меня есть форма.В этом я должен показать диалог (при некоторых обстоятельствах) с текстом и кнопкой «Отмена».Я хочу отследить событие этой кнопки в своей форме или узнать, была ли нажата эта кнопка отмены.
Как это можно сделать?Я считаю, что это возможно, но не могу понять, как?
Из моей основной формы у меня есть BackgroundWorker.Когда запускается backgroundWorker, я открываю childForm (с меткой и кнопкой), а когда фоновая задача заканчивается, я закрываю childForm.Что я хочу больше, так это то, что при нажатии кнопки childForm текущая задача backgroundWorker должна быть отменена. РЕШЕНИЕ
В моей childForm я установил свойство CancelButton как cancelBtn для формы.Другой код:
private bool cancel;
public bool Cancel
{
get { return cancel; }
set { cancel = value; }
}
// Set the flag as true to indicate that Cancel button was actually pressed
private void cancelBtn_Click(object sender, EventArgs e)
{
Cancel = true;
}
В mainForm:
childDlg = new ChildDialog();
// wHILE cALLING
backgroundWorker1.RunWorkerAsync();
msg = "Connecting...";
childDlg .set(msg, "");
if (!childDlg .IsAccessible)
{
// This is caught even when the dialog is closed
if (childDlg .ShowDialog() == DialogResult.Cancel) {
if (childDlg.Cancel == true) { // Was really cancelBtn pressed
// NOW ONLY do my stuff
}
}
}
Я пытался использовать метод @DeveloperX, т.е. EventHandler в родительском классе, но метод родительского класса никогда не вызывался.Много пытался, но не смог добиться успеха.Затем попробовал технику @ RobinJ, и это сработало.Мне просто нужно было добавить флаг, чтобы определить, была ли нажата кнопка отмены, или jjst windw был нормально закрыт.
Спасибо всем вам за попытку помочь мне.Я действительно ценю твою помощь.
Спасибо