如何从CheckedListBox获取已检查项的值?
我在C#中的WinForm上使用了CheckedListBox。 我已经限制了这个控制,如下所示 –
chlCompanies.DataSource = dsCompanies.Tables[0]; chlCompanies.DisplayMember = "CompanyName"; chlCompanies.ValueMember = "ID";
我可以获得已检查项目的索引,但我如何获得检查项目文本和值。 而是如何通过CheckedItems枚举访问文本和值?
谢谢你分享你的时间。
将其强制转换为原始类型,如果要绑定表,则将其作为DataRowView,然后可以从相应的列中获取Id和Text:
foreach(object itemChecked in checkedListBox1.CheckedItems) { DataRowView castedItem = itemChecked as DataRowView; string comapnyName = castedItem["CompanyName"]; int? id = castedItem["ID"]; }
编辑:我意识到它被绑定到DataTable有点晚了。 在这种情况下,这个想法是相同的,如果你想使用该类,你可以转换为DataRowView
然后获取其Row
属性以获取DataRow
。
foreach (var item in checkedListBox1.CheckedItems) { var row = (item as DataRowView).Row; MessageBox.Show(row["ID"] + ": " + row["CompanyName"]); }
您需要将项目转换或解析为强类型的等效项,或使用System.Data.DataSetExtensions
命名空间来使用下面演示的DataRowExtensions.Field
方法 :
foreach (var item in checkedListBox1.CheckedItems) { var row = (item as DataRowView).Row; int id = row.Field("ID"); string name = row.Field("CompanyName"); MessageBox.Show(id + ": " + name); }
您需要强制转换项以访问类的属性。
foreach (var item in checkedListBox1.CheckedItems) { var company = (Company)item; MessageBox.Show(company.Id + ": " + company.CompanyName); }
或者,您可以使用OfType
扩展方法来获取强类型结果,而无需在循环中显式转换:
foreach (var item in checkedListBox1.CheckedItems.OfType()) { MessageBox.Show(item.Id + ": " + item.CompanyName); }
您可以遍历CheckedItems
属性:
foreach(object itemChecked in checkedListBox1.CheckedItems) { MyCompanyClass company = (MyCompanyClass)itemChecked; MessageBox.Show("ID: "" + company.ID.ToString()); }
https://msdn.microsoft.com/en-us/library/system.windows.forms.checkedlistbox.checkeditems.aspx
foreach (int x in chklstTerms.CheckedIndices) { chklstTerms.SelectedIndex=x; termids.Add(chklstTerms.SelectedValue.ToString()); }
埃及开发博客:获取vb.net中CheckedListBox中已检查项的值
在使用数据绑定CheckedListBox之后,您可以获取已检查项的值
For i As Integer = 0 To CheckedListBox1.CheckedItems.Count - 1 Dim XDRV As DataRowView = CType(CheckedListBox1.CheckedItems(i), DataRowView) Dim XDR As DataRow = XDRV.Row Dim XDisplayMember As String = XDR(CheckedListBox1.DisplayMember).ToString() Dim XValueMember As String = XDR(CheckedListBox1.ValueMember).ToString() MsgBox("DisplayMember : " & XDisplayMember & " - ValueMember : " & XValueMember ) Next
现在您可以使用循环中2变量XDisplayMember和XValueMember中CheckedListBox中的已检查项的值或显示
希望有用。
要获取CheckedListBox中的所有选定项,请尝试以下操作:
在这种情况下,ths值是一个String,但它与其他类型的Object一起运行:
for (int i = 0; i < myCheckedListBox.Items.Count; i++) { if (myCheckedListBox.GetItemChecked(i) == true) { MessageBox.Show("This is the value of ceckhed Item " + myCheckedListBox.Items[i].ToString()); } }
尝试:
foreach (var item in chlCompanies.CheckedItems){ item.Value //ID item.Text //CompanyName }
你可以试试这个:
上述就是C#学习教程:如何从CheckedListBox获取已检查项的值?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注---计算机技术网(www.ctvol.com)!
string s = ""; foreach(DataRowView drv in checkedListBox1.CheckedItems) { s += drv[0].ToString()+","; } s=s.TrimEnd(',');
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1009427.html