- ベストアンサー
VB2008 comboboxを連動させた際のエラー
- VB2008の顧客検索プログラムでcomboboxを連動させた際に、'0' の InvalidArgument=Value は 'SelectedIndex' に対して有効ではありません。 パラメータ名: SelectedIndexというエラーが出てしまい解決方法を求めています。
- 現在のソースコードを使ってcombobox1で選択した値に応じてcombobox2とcombobox3に表示したい値を設定していますが、エラーが発生してしまいます。どのように解決すればよいでしょうか?
- VB2008の顧客検索プログラムでcomboboxを連動させようとしていますが、'0' の InvalidArgument=Value は 'SelectedIndex' に対して有効ではありません。 パラメータ名: SelectedIndexというエラーが出てしまいます。解決方法を教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
デバッグの基本は何が原因でエラーとなるか、どこまでは正常に動いているか、を付きとめる事です。1行ずつブレークポイントを設定してステップ実行していけば、理由が判るようになっていきます。 下記行が ComboBox1.DataSource = namelist 実行された後、 Private Sub ComboBox1_SelectedIndexChanged(省略~ この↑イベントが実行され、結果としてエラーになっています。 エラー行は↓ですね。 ComboBox2.SelectedIndex = ComboBox1.SelectedIndex つまり、ComboBox2には何も選択肢が設定されていないのに、SelectedIndex = 0 を指定しようとした為に発生しているのです。 このことから、ComboBox1_SelectedIndexChanged イベントは、選択肢を追加しようとする際にも走る事が判りますね。 対処方法としては、フラグを用意して、ComboBox への選択肢初期設定中は、イベント内の処理を無視することです。たとえば次のような感じになります。 Public Class Form1 Dim bFormLoad As Boolean = True '■追加 Private Sub Form1_Load(省略~ (各処理) bFormLoad = False '■Form1_Load 内の最後に追加 End Sub Private Sub ComboBox1_SelectedIndexChanged(省略~ If bFormLoad Then Return '■追加 If ComboBox1.SelectedIndex > -1 Then ComboBox2.SelectedIndex = ComboBox1.SelectedIndex Else ComboBox2.Text = "" End If End Sub
お礼
早速のご回答ありがとうございます。 上記内容にて対処することが出来ました。 どうもありがとうございます。