• 締切済み

VB.NET 自作プロパティが変更されたらイベント

お世話になります。 ご回答宜しくお願いします。 現在VBでDLLプログラムを開発しております。 以下簡単な仕様です。 DLLで自作のプロパティ( SelectedFlg )と、 SelectedFlgが変更された時に発生するイベントを追加しました。 親システムからVBのDLLを呼び出し、親システムがSelectedFlgの値を変更すると DLL内でイベントを感知し、処理をするというような感じです。 例えば、親システムへDLLをパネルとして2つ( A , B )貼り付け Aをクリックすると、AのSelectedFlgをTrueに、BのSelectedFlgをFalseにして Trueの方はBackColorを赤、Falseの方はBackColorを白 のような形にしたいと考えてます。 しかし、実行してみると BackColorが反映されるのは、初期値を設定した時の1度のみでした。 その後クリックしても、BackColorが変化することはありません。 どこか間違いや思い違いがあるんでしょうか。 以下コードになります。  ・・・OriginalControlクラス・・・ Public Class OriginalControl   Public Event SelectedValueChanged(ByVal sender As Object, ByVal e As EventArgs)   Protected Sub OnSelectedValueChanged(ByVal e As EventArgs)     RaiseEvent SelectedValueChanged(Me, e)   End Sub   Public Property SelectedFlg() As Boolean     Get       Return m_SelectedFlg     End Get     Set(ByVal value As Boolean)       m_SelectedFlg = value       Me.OnSelectedValueChanged(New EventArgs)     End Set   End Property   Private m_SelectedFlg As Boolean End Class ・・・Panel・・・ OriginalControlクラスを継承したControl ( 省略 )     Private Sub Panel_SelectedValueChanged(ByVal sender As System.Object,                               ByVal e As System.EventArgs)                               Handles MyBase.SelectedValueChanged       If Me.SelectedFlg = True Then         setBackColor( Color.Red )       Else         setBackColor( Color.White )       End If     End Sub

みんなの回答

noname#251971
noname#251971
回答No.1

質問文に記載されたコード自体は、 とくに問題等見当たらないように思われます。 # イベント名がChangedなのに値の変化が無くてもイベント発生するとか、細かい点はさておき。 掲載されていない部分のコードで、 ・親側がちゃんとSelectedFlgを意図する値に設定しているか ・setBackColor()の中で、パラメータに渡された色を正しくBackColorに設定しているか などを確認してみてはいかがでしょうか。

pokeman-v
質問者

お礼

自己解決致しました。 原因は、イベントを返す処理のようなものが不足していたためでした。 親システムでDLLをクリックしたときに、MouseClickイベントをDLLに渡します。 その後、DLLからMouseClickイベントの返却を行わないと、 親システム上でMouseClickイベントが認識されずMouseClickの処理が無視されておりました。 Private Sub Me_Click(ByVal sender As System.Object,                ByVal e As System.EventArgs) Handles Me.Click   OnClick(e) 'イベントを返却する処理 End Sub 大変基礎的なところでした。 お騒がせ致しました。

関連するQ&A