プラグインでキーイベントを拾う方法

投稿者: 投稿日:2019/08/01(Thu) 23:10:13 No.2460

 こんばんは、お世話になります。

 プラグインでカスタムコントロールを自作しようと思い、試してみています。
 そこで1つわからないことがあるので、教えていただけないでしょうか。

 今回作成中のコントロールでは、諸事情でキーイベントを拾う必要があり、下記のように記述しました。
 なお、利用しているのは、C#です。

----------
protected override void OnKeyDown(KeyEventArgs e){
if ((e.KeyData & Keys.KeyCode) == Keys.Space){
//必要な処理
}
}
----------

 しかし、これだとプロデルスクリプト上で、「○○のキーが押された時の手順」でキーイベントを拾えなくなってしまって困っています。
 そもそもキーイベントが発生していないようです。
 これをプロデルスクリプトに記述したイベントも利用できるようにするには、プラグイン側でどのように記述すればよいのでしょうか。
 かなりわかりにくい質問かとは思いますが、教えていただけると幸いです。

 以上、よろしくお願いいたします。

Re: プラグインでキーイベントを拾う方法

投稿者:通り道 投稿日:2019/08/03(Sat) 10:05:19 No.2461

ほかから設定されているイベント処理はそのままで、自分のイベント処理を加えたいだけの場合、「OnXXX」をオーバーライドせずに、イベントハンドラに自分のハンドラを追加してください。
「OnXXX」をオーバーライドする方法を用いる場合、オーバーライドしたメソッドがすべてを肩代わりして行わなわなければなりません。もし、条件によって変えたいという時はもともとの処理を行いたいという場合にだけ、オーバーライドしている基底クラスのメソッドを明示的に呼び出さしてください。
(条件により振り分けるケースは、例えば、TextBoxを継承して、アルファベットしか入力できないTextBoxを作ろう という場合に使います。アルファベット(と編集に使うキー)なら基底クラスに処理を任せて、それ以外ならイベントをキャンセルする という感じです)

また、pluginの作成の際は、pluginを作成する際に取り込んでいるdll(utopiat.Host.dll)は、実装内容含めてすべて説明がないと厳しいのではないかと思います(継承すべきもの、指定すべき属性などがすべて含まれています)。作者の説明を待つか、ildasmなどで自力で読むしかありません。
※.netの仕組みを思い出したので編集。

解決しました

投稿者: 投稿日:2019/08/15(Thu) 12:53:25 No.2464

 こんにちは、お世話になります。
 返信が遅くなり、申し訳ありません。

 とりあえず、解決しました。
 アドバイスありがとうございました。

 それでは。

▲ページの先頭へ

- WebForum -