0

これは、ListViewの項目をクリックしたときにComboBoxのテキストを設定しようとする私のコードです。

Private Sub ListView1_Click()
  If ListView1.ListItems.Count > 0 Then
    Text1.Text = ListView1.ListItems(ListView1.SelectedItem.Index).Text
    Text2.Text = ListView1.ListItems(ListView1.SelectedItem.Index).ListSubItems(1).Text

    Sql = "SELECT A.AID,B.LOC_NAME,C.SNAME FROM ASSET A,LOCATION B,SUPPLIER C WHERE "
    Sql = Sql + "A.LOC_ID=B.LOC_ID AND A.SUP_ID=C.SUP_ID AND AID=" & Text1.Text
    RS.Open Sql, CON, 1, 2

    COM1
    Combo1.Text = RS!LOC_NAME                       //combo with style - 2
    COM5
    Combo5.Text = RS!SNAME                          //combo with style - 2
  End If
End Sub

Private Sub COM5()
   If Combo5.ListIndex = -1 Then
     For I = 0 To Combo5.ListCount - 1
       Combo5.ListIndex = I
     Next
    End If
End Sub

Private Sub COM1()
 If Combo1.ListIndex = -1 Then
   For I = 0 To Combo1.ListCount - 1
      Combo1.ListIndex = I
    Next
  End If
End Sub

ただし、ListView1をクリックすると、次のエラーが発生します。

'text'プロパティは読み取り専用です

誰かが理由を説明できますか?

4

2 に答える 2

1

ドロップダウンリストスタイルのコンボボックスの場合、アイテムを選択できるのは.textそのアイテムがすでに存在する場合のみであるため、リストに存在しないcombo1.text = "xxx"場合はエラーが発生"xxx"します。

存在に基づいて選択または追加するには、次のことができます。

Private Sub SelectOrAddToCombo(combo As ComboBox, value As String)
    Dim i As Long
    With combo
        For i = 0 To combo.ListCount - 1
            If StrComp(.List(i), value, vbTextCompare) = 0 Then
                combo.ListIndex = i
                Exit Sub
            End If
        Next
        .AddItem value
        .ListIndex = .NewIndex
    End With
End Sub

...

SelectOrAddToCombo Combo1, RS!LOC_NAME
SelectOrAddToCombo Combo5, RS!SNAME 

あなたのCOM5()/COM1()ルーチンのポイントが何であるかは明らかではありません。

リストビューについては、クリックするのではなく、

ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)

クリックされたアイテムを渡すイベントは、の必要性を否定しますListView1.SelectedItem(その場合はエラーが発生する可能性がありますNothing)。

于 2013-03-07T11:49:32.600 に答える
0

はい。コンボボックスに設定するテキストが配列に存在しない場合は、.textプロパティを設定する前に、(additem値を使用して)コンボボックスに配列を入力する必要があります。このエラーが発生します。

于 2015-07-08T17:31:49.607 に答える