イベントハンドラの第2引数として渡されるのがEventArgs。
イベントに関する情報がはいっている。
EventArgs Class (System) | Microsoft Docs
基本的には、自分で継承して独自の情報を格納できるようにしておいて、ハンドラに渡すという形になる。
空のプロジェクトを作成し、
EventConsoleEventArgs.csを追加。
EventArgsを継承し、このイベントの結果をResultプロパティ、入力文字列をLineプロパティで持つようにした。
EventConsole.csを追加。
コンストラクタで対象文字列を指定できるようにする。
EventLoopで入力文字列を読み取り、args.Lineにも入力文字列をセットしておく。
対象文字列と入力文字列が一致する場合は、 args.ResultをtrueにしてReadLineText実行、終わったらループを抜ける。
一致しない場合は、args.ResultをfalseにしてReadLineTextを実行、この場合はループを抜けない。
MainClass.csを追加。
コンストラクタに"END"を渡している。
EventConsole_ReadLineTextがイベントハンドラ。
senderはthisなのでEventConsoleオブジェクト自身の型の名前、eはEventConsoleEventArgsオブジェクトargsなので各プロパティを出力。
ABCDE sender = EventConsole e.Line = ABCDE e.Result = False VWXYZ sender = EventConsole e.Line = VWXYZ e.Result = False END sender = EventConsole e.Line = END e.Result = True 続行するには何かキーを押してください . . .
一致しない間はe.ResultがFalseで、繰り返す。
一致するとe.ResultがTrueになり、終了する。
Sample/dotnet/EventArgs/EventArgs/src/EventArgs_ at master · bg1bgst333/Sample · GitHub