別のクラスで実行されたメソッドを取得するためのボタンがあるフォームがあります。フォーム上イベントハンドラからの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;
}
は、イベントハンドラから値を返すために直接的な方法はありますか私は、イベントの結果を格納するために、別の静的フィールドを使用する必要がありますか?
更新:次のように私には最も簡単なように見えたJonのコメント、@パー
、私は、コードを変更:
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
はい。しかし、もしあなたが複数のイベントハンドラがあるならば、あなたは何が起こりたいかを考慮する必要があることに留意してください。 b)イベントハンドラはありません。 –