Irf*_*aza 27 .net c# checkedlistbox winforms
我在C#中的WinForm上使用了CheckedListBox.我已经限制了这个控制,如下所示 -
chlCompanies.DataSource = dsCompanies.Tables[0];
chlCompanies.DisplayMember = "CompanyName";
chlCompanies.ValueMember = "ID";
Run Code Online (Sandbox Code Playgroud)
我可以获得已检查项目的索引,但我如何获得检查项目文本和值.而是如何通过CheckedItems枚举访问文本和值?
谢谢你分享你的时间.
Iai*_*ard 31
将其强制转换为原始类型,如果您绑定表格,则将其作为DataRowView,然后您可以从相应的列中获取Id和Text:
foreach(object itemChecked in checkedListBox1.CheckedItems)
{
DataRowView castedItem = itemChecked as DataRowView;
string comapnyName = castedItem["CompanyName"];
int? id = castedItem["ID"];
}
Run Code Online (Sandbox Code Playgroud)
Ahm*_*eed 14
编辑:我意识到它与DataTable绑定了一点.在这种情况下,这个想法是相同的,如果你想使用该类,你可以转换为a DataRowView
然后获取它的Row
属性DataRow
.
foreach (var item in checkedListBox1.CheckedItems)
{
var row = (item as DataRowView).Row;
MessageBox.Show(row["ID"] + ": " + row["CompanyName"]);
}
Run Code Online (Sandbox Code Playgroud)
您需要将项目强制转换或解析为强类型等效项,或使用System.Data.DataSetExtensions
命名空间来使用下面演示的DataRowExtensions.Field
方法:
foreach (var item in checkedListBox1.CheckedItems)
{
var row = (item as DataRowView).Row;
int id = row.Field<int>("ID");
string name = row.Field<string>("CompanyName");
MessageBox.Show(id + ": " + name);
}
Run Code Online (Sandbox Code Playgroud)
您需要强制转换项以访问类的属性.
foreach (var item in checkedListBox1.CheckedItems)
{
var company = (Company)item;
MessageBox.Show(company.Id + ": " + company.CompanyName);
}
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用OfType
扩展方法获取强类型结果,而无需在循环中显式转换:
foreach (var item in checkedListBox1.CheckedItems.OfType<Company>())
{
MessageBox.Show(item.Id + ": " + item.CompanyName);
}
Run Code Online (Sandbox Code Playgroud)
您可以遍历该CheckedItems
属性:
foreach(object itemChecked in checkedListBox1.CheckedItems)
{
MyCompanyClass company = (MyCompanyClass)itemChecked;
MessageBox.Show("ID: \"" + company.ID.ToString());
}
Run Code Online (Sandbox Code Playgroud)
http://msdn.microsoft.com/en-us/library/system.windows.forms.checkedlistbox.checkeditems.aspx
归档时间: |
|
查看次数: |
150186 次 |
最近记录: |