DOBON.NET DOBON.NETプログラミング掲示板過去ログ

overrideのやり方について

環境/言語:[VB.Net Framework2.0 XP]
分類:[.NET]


いつも、お世話になります。
Overrideのやり方がわからず、困っております。ご教授のほど、よろしくお願い致します。

PicutreBoxを継承したMyClassにて、キーボードのキーイベントに
処理を追加したく、以下のように記述したのですが、動作しません。

MyClass自体は、MDIの子フォームのCotrol.addにて追加しております。
何か、他に考慮すべきことがあるのでしょうか?

Public Class MyClass

Inherits PictureBox

Protected Overrides Sub OnKeyDown(ByVal e As System.Windows.Forms.KeyEventArgs)
MyBase.OnKeyUp(e)

'↓キーが押された場合の処理を記述

End Sub

End Class
■No20215に返信(tororoさんの記事)
> Protected Overrides Sub OnKeyDown(ByVal e As System.Windows.Forms.KeyEventArgs)
> MyBase.OnKeyUp(e)
>
> '↓キーが押された場合の処理を記述
>
> End Sub

まず、OnKeyDown をオーバーライドしているわりに、MyBase.OnKeyUp を呼んでいるのはまずいですね。
PictureBox とのことですが、フォーカスを受け取っていない状態ではキーイベントは発生しないと思います。

それとも他の意図でしょうか?
>まず、OnKeyDown をオーバーライドしているわりに、MyBase.OnKeyUp を呼んでいるのはまずいですね。
>PictureBox とのことですが、フォーカスを受け取っていない状態ではキーイベントは発生しないと思います。

回答ありがとうございます。
MyBase.OnKeyUpではなく、MyBase.OnKeyDownでした。すいません。

フォーカスを受け取っていない状態にしなければならなかったのですね。

とりあえず。
Public Sub New()

Me.SetStyle(ControlStyles.Selectable, True)

  end Sub
を追加し、


Private Sub MyRich_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.GotFocus

MsgBox("test")

End Sub

とテストしてみましたが、上手くいきません。

MSDNの方には、
>コントロールは、一定の条件がすべて true の場合に、選択可能であり、入力フォーカスを受け取ることができます。一定の条件とは、ControlStyles の Selectable 値が true に設定されていること、コントロールが別のコントロールに格納されていること、およびすべての親コントロールが表示されており、有効であることです。

と記載されていたのですが、
>コントロールが別のコントロールに格納されていること、およびすべての親コントロールが表示されており、有効であることです。の意味がわからず、手間取っています。

PictureBoxを継承したクラスは、MDIの子ウィンドウのControls.addにて追加しているので、コントロールが別のコントロールに格納されているとは思います。また、親コントロールとは、MDIの子ウィンドウをさしていると思うのですが、表示もされており、有効であるとも思っています。(←有効って何が?という疑問が残りますが。。。)

何かわかることがありましたら、ご教授のほど、よろしくお願い致します。
>Private Sub MyRich_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.GotFocus

Private Sub MyClass_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.GotFocus

です。再度すいません。
自己レスです。

よくわかりませんが、次の設定を行ったら上手くいきました。
Me.SetStyle(ControlStyles.UserMouse, True)

とりあえずは、解決したのですが、理由がよくわかりません。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板