【问题标题】:Visual Basic.Net ListView itemsVisual Basic.Net ListView 项目
【发布时间】:2013-12-24 07:10:00
【问题描述】:
Dim item = ListView2.Items.Add("...")
    For cnt As Integer = 1 To ListView2.Columns.Count
        item.SubItems.Add("")
    Next
    If ListView2.FocusedItem.ImageIndex = 10 Then
        If TextBox2.Text.Length < 4 Then
            TextBox2.Text = ""
        End If
    End If

我得到的错误在这里:

If ListView2.FocusedItem.ImageIndex = 10 Then

错误名称:对象引用未设置为对象的实例

================================================ ======================

实际上是这样的:

Private Sub ListView2_DoubleClick(sender As Object, e As EventArgs) Handles ListView2.DoubleClick
    If ListView2.FocusedItem.ImageIndex = 0 Or ListView2.FocusedItem.ImageIndex = 1 Or ListView2.FocusedItem.ImageIndex = 2 Then
        If TextBox2.Text.Length = 0 Then
            TextBox2.Text += ListView2.FocusedItem.Text
        Else
            TextBox2.Text += ListView2.FocusedItem.Text & "\"
        End If
        RefreshList()
    End If
    'from here doesn't work
    If Not IsNothing(ListView2.FocusedItem) AndAlso ListView2.FocusedItem.ImageIndex = 10 Then
        If TextBox2.Text.Length < 4 Then
            TextBox2.Text = ""                
        Else
            TextBox2.Text = TextBox2.Text.Substring(0, TextBox2.Text.LastIndexOf("\"))
            TextBox2.Text = TextBox2.Text.Substring(0, TextBox2.Text.LastIndexOf("\") + 1)
            RefreshList()
        End If
    End If
End Sub

Public Sub RefreshList()
    ListView2.Items.Clear()
    Dim item = ListView2.Items.Add("...")
    For cnt As Integer = 1 To ListView2.Columns.Count
        item.SubItems.Add("")
    Next     
End Sub

【问题讨论】:

  • 基本上 Listview2 已经在 Form_Load 上填满了,我只想添加一个带有文本“...”的新项目,所以 List2iew 用目录和文件填充自己,我想保持新的第一个项目名称“...”,在这种情况下,表示“返回”。所以它现在在调用刷新方法时显示项目名称,但它什么都不做所以它是错误的..我该如何解决这个问题?

标签: vb.net listview


【解决方案1】:

在访问其属性(在本例中为 ImageIndex 属性)之前,尝试检查 ListView2.FocusedItem 以确保它不是 Null/Nothing。 以下是如何添加检查的示例:

If Not IsNothing(ListView2.FocusedItem) AndAlso ListView2.FocusedItem.ImageIndex = 10 Then

AndAlso 之后的条件只有在它之前的条件为真时才会被检查。

【讨论】:

  • 但如果它是假的,我怎样才能访问该属性而不给我那个错误?
  • 如果为false,则不需要访问该属性。为什么还要检查一个不存在的对象的属性。阅读stackoverflow.com/questions/4660142/… 以获取有关您遇到的错误的参考。
猜你喜欢
  • 2019-08-31
  • 1970-01-01
  • 1970-01-01
  • 2023-03-26
  • 2011-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多