我有一个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
任何想法都会受到赞赏...谢谢
答案 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)
要检查项目,您可以使用CheckedItems
或GetItemsChecked
。我试过.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项中的任何字符串值。