2012-03-16 9 views
0

Windows.forms.Labelを継承するユーザーコントロールを作成しました。イベントブロック:一部のイベントを次のユーザーが利用できないようにする方法

私が必要とするのは、そのUserControl(NameはLinkLable)のUserにWindows.forms.Labelのイベントを無効にしたいということです。

つまり、LabelにはonPaintイベントがあります。今では、あるユーザが自分のフォームにLinkLableを呼び出すと、LinkLableのコードを書くことができないはずです。

+0

呼び出すべきではないイベントを定義できますか? – Steve

答えて

0

私はおそらく完全にあなたは、このように派生クラスでイベントを非表示にすることができ、このようなプログラミングの問題を解決することは推奨されていない感じが:

フォーム上で次に
Partial Class MyLabel 
    Inherits System.Windows.Forms.Label 

    Public Shadows Event Paint As PaintEventHandler 


End Class 

Public Class Form1 


Private Sub Label1_Paint(ByVal sender As System.Object, ByVal e As _ 
    System.Windows.Forms.PaintEventArgs) Handles Label1.Paint 
     MsgBox("normal label") '**called 
End Sub 


Private Sub MyLabel1_Paint(ByVal sender As System.Object, ByVal e As _ 
    System.Windows.Forms.PaintEventArgs) Handles MyLabel1.Paint 
     MsgBox("my label") '**not called 
End Sub 

End Class 

ザ・上記のコードは1つのメッセージボックスのみを表示します。ユーザーはPaintイベントハンドラにコードを追加できますが、呼び出されることはありません。ペイントハンドラのコードが使用されるように、新しいビヘイビアを実装することもできますが、設計した新しい方法でのみ、ベースクラスの実装を完全に隠す必要があります。

+0

多くの親愛なるおじさん... – Ravindra

+0

お返事をお待ちしております。 –

関連する問題