【发布时间】:2014-02-05 18:47:42
【问题描述】:
我有一个列表框,并添加了一个字符串数组
static sting[] demo = new string[] {"cat", "dog", "bird", "horse"};
public Form1()
{
InitializeComponent();
ListBox1.Items.AddRange(demo);
}
然后我在其他地方尝试根据列表框的选定项创建一个布尔数组(它已启用多选)...
*我正在尝试做的逻辑
//somewhere...
bool[] b = new bool[] { false, false, false, false};
//somewhere else
for(int i=0; i<4; i++)
{
b[i] = ListBox1.Items[i].IsSelected;
}
这不起作用。我无法访问 .Items[i] 属性并且只有可用的方法(在这种情况下这些方法毫无意义:Equals()、GetHashCode()、GetType()、ToString())。
对 selectedIndices 使用 foreach 循环也不起作用,因为它只会给我选择的那些(并且我需要遍历每个项目的值 true|false)。
我尝试添加 System.Windows.Controls.ListBoxItem,但也没有用...
System.Windows.Controls.ListBoxItem[] myItems = new System.Windows.Controls.ListBoxItem[4];
public Form1()
{
InitializeComponent();
for(int i = 0; i < 4; i++)
{
myItems[i] = new System.Windows.Controls.ListBoxItem();
myItems[i].Content = demo[i];
listbox1.Items.Add(myItems[i].Content);
}
}
这部分运行良好,但后来当我尝试循环遍历 ListBoxItems 时,它会炸毁向 ListBoxItem 投掷字符串抛出错误(即使我将其添加为 ListBoxItem 对象???)
再次,我正在尝试做的逻辑*但不起作用
bool tmp;
foreach(System.Windows.Controls.ListBoxItem li in listbox1.Items)
{
tmp = li.IsSelected;
// do something
}
我假设尝试一个 for 循环(实际上我无论如何都需要使用它来指向 bool 数组)将以同样的方式失败。我不需要使用 ListBoxItem 类(实际上要添加更多引用,所以我宁愿不使用它)但我认为它可以正常工作。必须有一种更有效的方法来做到这一点。另外我也想知道为什么当我将一个listboxitem对象添加到列表框时,为什么我稍后尝试循环访问它时会出现类型转换错误。
【问题讨论】:
标签: c# listbox listboxitem