获取CheckBoxList项值

时间:2012-09-14 17:58:55

标签: c# winforms checklistbox

我有一个CheckBoxList,我填充了数据。当我尝试从列表中检索已检查的项目时,我只能获取项目序号,我无法获得该值。

我已经读过您可以使用Items [i]。值但是当我尝试这样做时,我收到一条错误消息,指出没有扩展方法'值'。

这是我用来尝试获取信息的代码(注意GetItemText(i)实际上只给出了项目位置,而不是项目的文本)

   private void btnGO_Click(object sender, EventArgs e)
{
    for (int i = 0; i < chBoxListTables.Items.Count; i++)
    {
        if (chBoxListTables.GetItemChecked(i))
        {
            string str = chBoxListTables.GetItemText(i);
            MessageBox.Show(str);

            //next line invalid extension method
            chBoxListTables.Items[i].value;
        }
    }
}

这是使用.Net 4.0

任何想法都会受到赞赏...谢谢

9 个答案:

答案 0 :(得分:15)

这最终变得非常简单。 chBoxListTables.Item [i]是一个字符串值,显式转换允许将其加载到变量中。 以下代码有效:

private void btnGO_Click(object sender, EventArgs e)
{
    for (int i = 0; i < chBoxListTables.Items.Count; i++)
    {
          if (chBoxListTables.GetItemChecked(i))
        {
            string str = (string)chBoxListTables.Items[i];
            MessageBox.Show(str);
        }
    }
}

答案 1 :(得分:4)

尝试使用它。

        for (int i = 0; i < chBoxListTables.Items.Count; i++)
        {
            if (chBoxListTables.Items[i].Selected)
            {
                string str = chBoxListTables.Items[i].Text;
                MessageBox.Show(str);

                var itemValue = chBoxListTables.Items[i].Value;
            }
        }

“V”应该在CAPS中。

这是WinForm应用程序中使用的另一个代码示例,并且运行正常。

        var chBoxList= new CheckedListBox();
        chBoxList.Items.Add(new ListItem("One", "1"));
        chBoxList.Items.Add(new ListItem("Two", "2"));
        chBoxList.SetItemChecked(1, true);

        var checkedItems = chBoxList.CheckedItems;
        var chkText = ((ListItem)checkedItems[0]).Text;
        var chkValue = ((ListItem)checkedItems[0]).Value;
        MessageBox.Show(chkText);
        MessageBox.Show(chkValue);

答案 2 :(得分:2)

要检查项目,您可以使用CheckedItemsGetItemsChecked。我试过.NET 4.5中的代码

遍历CheckedItems集合。这将为您提供已检查项目列表中的项目编号,而不是整体列表。因此,如果未选中列表中的第一项并选中第二项,则下面的代码将显示Checked Item 1 = MyListItem2等文本。

//Determine if there are any items checked. 
if(chBoxListTables.CheckedItems.Count != 0)  
{
    //looped through all checked items and show results.
    string s = "";
    for (int x = 0; x < chBoxListTables.CheckedItems.Count; x++)
    {
        s = s + (x + 1).ToString() + " = " + chBoxListTables.CheckedItems[x].ToString()+ ", ";
    }
    MessageBox.Show(s);//show result
}

<强> -OR -

逐步浏览Items集合并为每个项目调用GetItemChecked方法。这将为您提供整体列表中的项目编号,因此如果未选中列表中的第一项并选中第二项,则会显示Item 2 = MyListItem2之类的内容。

int i;  
string s;   
s = "Checked items:\n" ;  
for (i = 0; i < checkedListBox1.Items.Count; i++)  
{  
   if (checkedListBox1.GetItemChecked(i))  
   {  
      s = s + "Item " + (i+1).ToString() + " = " + checkedListBox1.Items[i].ToString() + "\n";  
   }  
}  
MessageBox.Show (s);

希望这会有所帮助......

答案 3 :(得分:1)

//简单示例代码:

foreach (var item in YourCheckedListBox.CheckedItems)
{List<string>.Add(item);}

答案 4 :(得分:1)

你可以试试这个: -

string values = "";
foreach(ListItem item in myCBL.Items){
if(item.Selected)
{
values += item.Value.ToString() + ",";  
}
}
values = values.TrimEnd(',');  //To eliminate comma in last.

答案 5 :(得分:0)

而不是:

CheckboxList1.Items[i].value;

试试这个:

CheckboxList1.Items[i].ToString();

它对我有用:)

答案 6 :(得分:0)

尝试使用它:

 private void button1_Click(object sender, EventArgs e)
    {

        for (int i = 0; i < chBoxListTables.Items.Count; i++)
            if (chBoxListTables.GetItemCheckState(i) == CheckState.Checked)
            {
               txtBx.text += chBoxListTables.Items[i].ToString() + " \n"; 

            }
    }

答案 7 :(得分:0)

您可以初始化字符串列表并添加所选项目。

请检查代码,对我来说很好。

List<string> modules = new List<string>();

foreach(ListItem s in chk_modules.Items)
{
    if (s.Selected)
    {
         modules.Add(s.Value);
    }
}

答案 8 :(得分:0)

这将为您解决问题:

foreach (int indexChecked in checkedListBox1.CheckedIndices)
{
    string itemtxt = checkedListBox11.Items[indexChecked];
}

它会返回checkedlistbox项中的任何字符串值。