У меня есть форма, которая имеет кнопку, чтобы получить метод, выполненный в другом классе.Visual C# возвращающее значение из обработчика события
код на форме:
public delegate void CustomPreviewCreate();
public static event CustomPreviewCreate CustomPreviewCreate_Do;
private void CreatePreview()
{
if (CustomPreviewCreate_Do !=null)
{
CustomPreviewCreate_Do();
}
}
Это событие затем получает обрабатывается в другом классе. То, что я хотел бы достичь, - это то, что я могу вернуть форму в виде формы возвращаемого значения, если метод правильно выполнен.
То, что я пробовал до сих пор, не дает мне результата.
Вот код:
public void Initialize()
{
SubAsstViewPartControl.CustomPreviewCreate_Do += SubAsstViewPartControl_CustomPreviewCreate_Do;
// this gives me a the compiler error that the return type is wrong
}
private bool SubAsstViewPartControl_CustomPreviewCreate_Do()
{
// do stuff
return false;
}
Есть ли прямой способ возврата значения из обработчика событий или мне нужно использовать отдельное статическое поле для хранения результата событий в?
Update:
Per @ комментарий Джона, который казался самым простым для меня, я изменил код следующим образом:
public delegate bool CustomPreviewCreate();
public static event CustomPreviewCreate CustomPreviewCreate_Do;
private void CreatePreview()
{
if (CustomPreviewCreate_Do !=null)
{
bool returnval = CustomPreviewCreate_Do();
}
}
И потом:
bool SubAsstViewPartControl_CustomPreviewCreate_Do()
{
// do stuff
return true;
}
Подскажите пожалуйста если это приемлемый подход, когда я хочу просто возвращать логические значения?
Ну вы * можете * вернуть значение из обработчика событий, но только если тип делегата объявляется возвращать значение ... –
Это означает, что мне нужно изменить код моего делегата от 'void' до' bool' например? – ib11
Да. Но имейте в виду, что вы должны подумать о том, что вы хотите, если: a) есть несколько обработчиков событий; б) нет обработчиков событий. –