- PR -

コンボボックスでのSelectedIndexChangedの発生条件

1
投稿者投稿内容
chiroru
ベテラン
会議室デビュー日: 2008/10/02
投稿数: 59
投稿日時: 2009-03-30 16:17
Microsoft Visual Studio 2008
SQL Server 2005

コンボボックスのSelectedIndexChangedについてご教授ください。
SelectedIndexChangedイベントはSelectedIndex プロパティが変更された場合に発生するため、
コンボボックスの内容をデータベースから作成した時にも発生してしまいます。
そのため、下記のようなコードでは何度もSelectedIndexChangedイベントが発生してしまいます。
(下記の例だとDataSourceを割り当てた時、DisplayMemberにプロパティを与えたときに発生します。)
そこで、コンボボックスのデータバインド前に、RemoveHandlerを使用しようして
フォームロードの時はSelectedIndexChangedイベントを解除しようと思ったのですがうまくいきません。
RemoveHandlerの使い方が悪いのでしょうか?それとももっといい回避方法はありますでしょうか?
よろしくお願いします。

コード:
 
Public Class frm0001
	Private Sub Me_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
		RemoveHandler Me.Load, AddressOf cnbCD_SelectedIndexChanged ←@
		call modCmbSet.aaa(me.cnbCD)
	End Sub
	Private Sub cnbCD_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cnbCD.SelectedIndexChanged
		me.T_AAATableAdapter.Fill(me.Frm0001DataSet.T_AAA, .cnbCD.SelectedValue)
	End Sub
End Class
--------------------------------------------------------------------------------
Module modCmbSet
    Public Function aaa(ByRef nObject As Object) As Boolean
        <〜省略〜 コンボボックスのデータ取得>
        nObject.DataSource = myLists
        nObject.DisplayMember = "Value"
        nObject.ValueMember = "Code"
        Return True
    End Function
End Module




King
ぬし
会議室デビュー日: 2008/06/20
投稿数: 284
投稿日時: 2009-03-30 16:33
> RemoveHandler Me.Load, AddressOf cnbCD_SelectedIndexChanged

イベント「Me.Load」にイベントハンドラ「cnbCD_SelectedIndexChanged」は
元々関連付けられていないと思います。
イベント「cnbCD.SelectedIndexChanged」に関連付けられていると思います。
chiroru
ベテラン
会議室デビュー日: 2008/10/02
投稿数: 59
投稿日時: 2009-03-30 17:02
引用:

イベント「Me.Load」にイベントハンドラ「cnbCD_SelectedIndexChanged」は
元々関連付けられていないと思います。
イベント「cnbCD.SelectedIndexChanged」に関連付けられていると思います。


すみません。簡単なことを質問してしまいました。
ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)