【问题标题】:Accessing ListBox.Item[i] IsSelected property访问 ListBox.Item[i] IsSelected 属性
【发布时间】: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


    【解决方案1】:

    您没有标记您的问题,但看起来您正在将 WPF 类与 WinForms 项目混合使用。

    要模仿 IsSelected 属性,您可以使用以下内容:

    for (int i = 0; i < 4; i++) {
      b[i] = listBox1.SelectedIndices.Contains(i);
    }
    

    【讨论】:

      【解决方案2】:

      你尝试过这样的事情吗?

      for(int i=0; i<4; i++)
      {
          if(ListBox1.Items[i].IsSelected)
              b[i] = true;
      }
      

      我认为编译器在运行之前没有 IsSelected() 的值。

      【讨论】:

      • 您无法在任何地方访问这些属性;这就是让我难过的地方。我不知道为什么你不能,但由于某种原因你不能访问 .IsSelected 属性
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-08
      • 2011-12-14
      • 1970-01-01
      • 2015-11-03
      • 2022-07-09
      • 2020-11-05
      • 2020-06-25
      相关资源
      最近更新 更多