我有一个列表框,并添加了一个字符串数组
static sting[] demo = new string[] {"cat", "dog", "bird", "horse"};
public Form1()
{
InitializeComponent();
ListBox1.Items.AddRange(demo);
}
然后在其他地方我试图根据列表框的选定项目创建一个bool数组(启用了多选)...
*我想要做的逻辑
//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对象添加到列表框时,为什么当我稍后尝试循环时它会出现类型转换错误。
答案 0 :(得分:0)
您没有标记您的问题,但看起来您正在将WPF类与WinForms项目混合。
要模仿IsSelected属性,可以使用以下内容:
for (int i = 0; i < 4; i++) {
b[i] = listBox1.SelectedIndices.Contains(i);
}
答案 1 :(得分:-1)
for(int i=0; i<4; i++)
{
if(ListBox1.Items[i].IsSelected)
b[i] = true;
}
我认为编译器在运行之前没有IsSelected()的值。