【问题标题】:How to Make A ListView Checkbox React like Radio Button如何使 ListView 复选框像单选按钮一样反应
【发布时间】:2012-12-09 02:52:48
【问题描述】:

我的列表视图中有几个项目是复选框。

我设法在我的列表视图“ItemChecked”事件中使用了这段代码:

For Each item In lwSources.Items
    If Not item.Index = e.Item.Index Then item.Checked = False
Next

问题在于它的反应不正确。例如,如果没有选择,我单击一次,该项目被正确选择。如果我尝试单击另一个项目(未选中),那么我检查的第一个项目将被取消选中,我必须再次单击以检查我当前想要的项目。

它需要比实际需要多 1 次点击...

【问题讨论】:

  • 你能解释一下你在哪里加载/绑定你的列表框吗?因为在这里你正在检查列表框中的所有项目,所以当你检查第二个项目时,它将再次循环所有项目,这意味着第二次检查项目的索引与第一次检查项目不同,所以条件是真的,所以以前检查过的项目设置为未选中并选中第二项....
  • lwSources 列表视图中填充了从另一个对话框中选择的项目。根据我的选择,这些选定的项目将被添加到 lwSources
  • 它只是循环遍历列表框中的所有项目
  • 是否仍要选中上一个复选框?
  • 不,我不希望仍选中前一个复选框。我希望复选框像单选按钮一样做出反应(因为单选按钮不能放在列表视图中)。

标签: vb.net listview checkbox radio-button


【解决方案1】:

经过一个小时的尝试,我终于做到了。

首先像这样设置一个全局变量..

Dim a As Integer = 0

在正常的点击事件中将其设置为 0,它将首先被触发。

    Private Sub ListView1_Click(sender As System.Object, e As System.EventArgs) Handles   ListView1.Click
     a = 0
    End Sub

并在检查的列表视图项中,检查 a = 0。

Private Sub ListView1_ItemChecked(sender As System.Object, e As System.Windows.Forms.ItemCheckedEventArgs) Handles ListView1.ItemChecked

    If a = 0 Then
        For Each item In lwSources.Items
            a = 1
            If Not item.Index = e.Item.Index Then
                item.Checked = False
            End If
        Next
    End If
End Sub

我认为问题在于,当我们更改选中的值时,它会再次触发事件但没有发送者,这就是为什么它们都进入未选中状态的原因。

【讨论】:

    【解决方案2】:

    在此条件下设置此条件并尝试....

    For Each item In lwSources.Items
          If  item.Index = e.Item.Index Then
           item.Checked = true
          End If
     Next
    

    【讨论】:

    • 不幸的是所有的复选框都被选中了。
    • 你在列表框中使用复选框吗?
    • 是的,没错。我认为只有带有 item.checked = false 的“else”就足够了。但我最终得到了一个 stackoverflow。
    【解决方案3】:

    你好,你的代码很棒,如果你把代码放在 ItemCheck 事件中而不是像这样的 ItemChecked 事件中,它也会很好用

    Private Sub IMFavIconList_ItemCheck(sender As Object, e As ItemCheckEventArgs) Handles IMFavIconList.ItemCheck For Each item In sender.Items If Not item.Index = e.Index Then item.Checked = False Next End Sub

    这对我很有用,伙计!

    【讨论】:

      猜你喜欢
      • 2011-06-09
      • 1970-01-01
      • 1970-01-01
      • 2013-02-09
      • 2021-02-03
      • 1970-01-01
      • 1970-01-01
      • 2016-03-20
      • 1970-01-01
      相关资源
      最近更新 更多