【问题标题】:VB.NET List Box Selected IndexVB.NET 列表框选定索引
【发布时间】:2012-01-18 11:36:40
【问题描述】:

我似乎对列表框上的选定索引有疑问。

列表框根据用户选择插入了各种项目。一个例子是:

LiIndex = ListBox1.Items.Count      
ListBox1.Items.Insert(LiIndex, "Item1")

LiIndex = ListBox1.Items.Count      
ListBox1.Items.Insert(LiIndex, "AND")

LiIndex = ListBox1.Items.Count      
ListBox1.Items.Insert(LiIndex, "Item2")

LiIndex = ListBox1.Items.Count      
ListBox1.Items.Insert(LiIndex, "AND")

LiIndex = ListBox1.Items.Count      
ListBox1.Items.Insert(LiIndex, "Item3")

这一切都可以正常工作和显示。我遇到的问题是,如果我选择两个 AND 中的第二个。如果我单击列表中的第二个“AND”,然后单击一个按钮来触发方法,则所选索引始终是第一个“AND”的索引。

Dim listIndex as integer = ListBox1.SelectedIndex

我不知道为什么,列表框本身总是将第二个显示为选中,但操作会针对第一个发生。

任何关于我哪里出错的想法将不胜感激。

【问题讨论】:

  • 您提供的代码不足以解决您的问题。您在获取列表框项值的位置发布代码...
  • 根据您向我们展示的内容,ListBox1.SelectedIndex 将为第一个 AND 和 3 显示 1第二个与。一定有其他事情发生了,你没有向我们展示。

标签: asp.net vb.net listbox selectedindex


【解决方案1】:

看起来不错,但我认为您创建的索引是错误的,或者您在单击按钮或其他内容时正在重置或取消选择列表框...

我这样做了,它成功了,我在选择第二个“AND”时得到 index = 3(并且语法更简洁)

ListBox1.Items.Insert(ListBox1.Items.Count, "Item1")
ListBox1.Items.Insert(ListBox1.Items.Count, "AND")
ListBox1.Items.Insert(ListBox1.Items.Count, "Item2")
ListBox1.Items.Insert(ListBox1.Items.Count, "AND")
ListBox1.Items.Insert(ListBox1.Items.Count, "Item3")

【讨论】:

    【解决方案2】:

    无论您想实现什么,直接处理 ListBox 项都不是一个好的开始。 您应该使用 ObservableList(Of String) 作为代码的属性并绑定列表 在 xaml 中。
    之后,您的代码变为: MyItemList.Add("My Item")
    问题可能来自在您的代码中使用 SelectedItem 或来自您正在显示的事实 两次相同的对象(我曾经在显示两次相同对象的 CheckBox 中有一个奇怪的行为) 你可以通过定义/使用一个类来存储数据来摆脱它:无论如何,它不仅仅是 关于一个字符串,不是吗?所以你可以有一个带有 ToString 重载的 ItemInfo 类来显示 或者,您在 Window 资源中定义一个 DataTemplate,其中 ItemInfo 作为 DataType。

    <DataTemplate DataType="{x:Type l:ItemInfo}">
            <TextBlock Text="{Binding ItemText}" />
    </DataTemplate>  
    

    在您使用的代码中,MyItemList 现在是 ObervableList(Of ItemInfo) : MyList.Add(New ItemInfo(" some text", ...) )
    所以你永远不会有两次相同的项目。

    更多的工作,但在这里我们有一个更坚实的开始之后添加数据/功能。

    【讨论】:

    • 谢谢。将看看它并尝试改变方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-06
    • 2016-05-19
    相关资源
    最近更新 更多