掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
多次元配列のインデックスを取得するには? (ID:146593)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
初めまして。 早速で申し訳ないのですが、 現在、VB6で作成されたプログラムをVB2008で作動するように書き換えを行っている中で不明な点がありましたので、 是非アドバイスを頂けたらと思い投稿しました。 こちらの動作環境は VB2008,XP(SP3) です。 フォームに CombBox...cmbA0,cmbA1,cmbB0,cmbB1,cmbC0,cmbC1があります。 cmbA0の表示が変わったら、cmbA1の表示も変わる。 cmbA1の表示が変わっても、同じようにcmbA0の表示も変わる。 cmbB0,cmbB1,cmbC0,cmbC1についても同じ動作をします。 以下、VB6で作成されたプログラムです。 'cmbA0,cmbA1 Private Sub cmbA_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbA.SelectedIndexChanged Dim Index As Short = cmbA.GetIndex(sender) If cmbA(0).SelectedIndex <> cmbA(1).SelectedIndex Then cmbA(1 - Index).SelectedIndex = cmbA(Index).SelectedIndex End If End Sub 'cmbB0,cmbB1 Private Sub cmbB_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbB.SelectedIndexChanged Dim Index As Short = cmbB.GetIndex(sender) If cmbB(0).SelectedIndex <> cmbB(1).SelectedIndex Then cmbB(1 - Index).SelectedIndex = cmbB(Index).SelectedIndex End If End Sub 'cmbC0,cmbC1 Private Sub cmbC_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbC.SelectedIndexChanged Dim Index As Short = cmbC.GetIndex(sender) If cmbC(0).SelectedIndex <> cmbC(1).SelectedIndex Then cmbC(1 - Index).SelectedIndex = cmbC(Index).SelectedIndex End If End Sub cmbA(cmbA0,cmbA1),cmbB(cmbB0,cmbB1),cmbC(cmbC0,cmbC1)はVB6→VB2008にアップグレードの際、 Microsoft.VisualBasic.Compatibility.VB6のCombBoxArrayを使用し、配列になっています。 上記をまとめて…ニュアンス的には下記のような感じにしたいのですが、 IndexOfでは一次元の配列のインデックスしか取得できないということで、 インデックス取得ができずに躓いています。 Dim cmbABC()() As ComboBox Private Sub Form_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load cmbABC = New ComboBox()() {New ComboBox() {cmbA0, cmbA1}, New ComboBox() {cmbB0, cmbB1}, New ComboBox() {cmbC0, cmbC1}} End Sub Private Sub cmbABC_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbA0.SelectedIndexChanged,cmbA1.SelectedIndexChanged,cmbB0.... Dim Index As Byte = Array.IndexOf(cmbABC, sender) If cmbABC()(0).SelectedIndex <> cmbABC()(1).SelectedIndex Then cmbABC()(1 - Index).SelectedIndex = cmbABC()(Index).SelectedIndex End If End Sub cmbABC()の一次元であれば楽にできるのですが、それですと0と1の対になっている動作が出来ずどうしたものかと・・・ やりたいことは伝わりますでしょうか? 先駆者の方々のご指摘、アドバイスをお待ちしております。 どうぞよろしくお願いいたします。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.