
お世話になります。
ご回答宜しくお願いします。
現在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
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.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
大変基礎的なところでした。
お騒がせ致しました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB.NETでコンボボックスの1行目...
-
ユーザーフォームのテキストボ...
-
テキストボックスのvalueとtext...
-
VBA ドロップダウンリストを残...
-
C言語では0は・・・
-
setcookieで「path」に複数の値...
-
pingを行うプログラム
-
VBプログラム エラーが出ます
-
OracleでRecordCountが正しくな...
-
WebRequestでJavascriptの値取得
-
VBで三項演算子
-
DateLastModifiedのフォーマット
-
ComboBoxとListBoxとの連動
-
DataTableに対するLINQについて
-
【ASP.NET】 DataTextFieldの値...
-
MATLABのGUIについて教えていた...
-
フォーム間での変数の受け渡し
-
ACCESS VBA 画像ファ...
-
VB.NETでアクティブなformを知...
-
RGB値をL*a*b*に変換したい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストボックスのvalueとtext...
-
値を返さないコード パス
-
VB.NETでコンボボックスの1行目...
-
VBA ドロップダウンリストを残...
-
C#の質問です
-
vb6のVSFlexGridで選択行、列の...
-
VB.NETでアクティブなformを知...
-
Excel VBAのリストボックスの値...
-
VB.NETのスクロールバーコント...
-
PL/SQLでのTO_DATEの時間取得に...
-
ユーザーフォームのテキストボ...
-
VBA(自然数)
-
マクロ 特定のセル値のみクリ...
-
マクロで奇数と偶数の値を2か所...
-
ACCESS VBA 画像ファ...
-
変数に代入してある数値を表示...
-
【ASP.NET】 DataTextFieldの値...
-
チェックした値を取得したい(C...
-
変数名の取得
-
windowsアプリケーションで小数...
おすすめ情報