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 回答