- PR -

ComboBox.ItemsにObjectをセットしている場合のIndexOf

1
投稿者投稿内容
さくら
常連さん
会議室デビュー日: 2005/09/12
投稿数: 31
投稿日時: 2005-12-01 13:34
ComboBoxで名称を切り替えられたらそれに対応するコードを取得できる
ComboBoxを作るため、ComboBox.Itemsに
コード:
Public Class ItemList
        Private mItemVal As String '名称
        Private mIDVal As String 'コード

        Public Property ItemVal() As String
            Get
                Return mItemVal
            End Get

            Set(ByVal sValue As String)
                mItemVal = sValue
            End Set
        End Property

        Public Property IDVal() As String
            Get
                Return mIDVal
            End Get

            Set(ByVal iValue As String)
                mIDVal = iValue
            End Set
        End Property
        Public Overrides Function ToString() As String
            Return mItemVal
        End Function
    End Class


というクラスを作ってマスターからコードと名前の対をとってきて格納させています。
これで例えばComboBox1.Items(0).ItemValとすると名称はとれるのですが、
このComboBoxから「名称を渡してそれがItems(のItemVal)の何番目にいるか」を
とるということをしようとして困っています。

文字列だけをセットしているComboBoxであればItems.IndexOf(ターゲット文字列)
でとってこられるのですが、Itemsに格納されているのがItemListなため
文字列とItemListの比較になってしまうようで、-1が返ってきています。

今は苦肉の策として
コード:
For cnt As Integer = 0 To Me.ComboBox1.Items.Count - 1
	If cboCONSTR_KBN.Items(cnt).itemval = ターゲット文字列 Then
		cboCONSTR_KBN.SelectedIndex = cnt
	End If
Next


のようにループをまわしながらItemValを順繰りに見て探しているのですが
IndexOfのようにメソッド一発で呼べないものでしょうか?
なければあきらめて、共通関数として実装しようと思っていますが
標準のメソッドでできるものならそちらを使いたいのです。
まどか
ぬし
会議室デビュー日: 2005/09/06
投稿数: 372
お住まい・勤務地: ますのすし管区
投稿日時: 2005-12-01 14:50
DataSource,ValueMember,DisplayMemberの各プロパティを調べてみてください。
ListControl.DataSourceのヘルプの例が参考になるでしょう。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-12-01 15:37
引用:

まどかさんの書き込み (2005-12-01 14:50) より:

DataSource,ValueMember,DisplayMemberの各プロパティを調べてみてください。
ListControl.DataSourceのヘルプの例が参考になるでしょう。


補足ですが、バインドしていない場合は ToString した値にヒットしますね。
格納したインスタンスがサポートしていなければなりませんが。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
まどか
ぬし
会議室デビュー日: 2005/09/06
投稿数: 372
お住まい・勤務地: ますのすし管区
投稿日時: 2005-12-01 15:50
引用:

補足ですが、バインドしていない場合は ToString した値にヒットしますね。


元記事の例ではオーバーライドしていたので、たどり着けると思い省略しましたぁ。
1

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