- 締切済み
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
- みんなの回答 (1)
- 専門家の回答
みんなの回答
質問文に記載されたコード自体は、 とくに問題等見当たらないように思われます。 # イベント名がChangedなのに値の変化が無くてもイベント発生するとか、細かい点はさておき。 掲載されていない部分のコードで、 ・親側がちゃんとSelectedFlgを意図する値に設定しているか ・setBackColor()の中で、パラメータに渡された色を正しくBackColorに設定しているか などを確認してみてはいかがでしょうか。
お礼
自己解決致しました。 原因は、イベントを返す処理のようなものが不足していたためでした。 親システムで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 大変基礎的なところでした。 お騒がせ致しました。