我有一個表單,它有一個按鈕來獲取在另一個類中執行的方法。在表單上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;
}
是否有任何直接的方式從一個事件處理函數的返回值或者我需要使用一個單獨的靜態字段來存儲事件結果?
更新:
每@喬恩的評論,這似乎是最簡單的給我,我修改了代碼如下:
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)有多個事件處理程序,則應考慮想要發生的事情; b)沒有事件處理程序。 –