checkedlistbox1 - checklist c#
¿Cómo obtener el valor del artículo comprobado de CheckedListBox? (8)
Devuélvalo a su tipo original, que será un DataRowView si está vinculando una tabla, y luego puede obtener el Id y el texto de las columnas correspondientes:
foreach(object itemChecked in checkedListBox1.CheckedItems)
{
DataRowView castedItem = itemChecked as DataRowView;
string comapnyName = castedItem["CompanyName"];
int? id = castedItem["ID"];
}
He usado un CheckedListBox sobre mi WinForm en C #. He acotado este control como se muestra a continuación:
chlCompanies.DataSource = dsCompanies.Tables[0];
chlCompanies.DisplayMember = "CompanyName";
chlCompanies.ValueMember = "ID";
Puedo obtener los índices de los elementos comprobados, pero ¿cómo puedo obtener el valor y el texto de los elementos comprobados? Más bien, ¿cómo puedo enumerar a través de CheckedItems que tienen acceso a Texto y valor?
Gracias por compartir tu tiempo.
EDIT: Me di cuenta un poco tarde de que estaba vinculado a un DataTable. En ese caso, la idea es la misma, y puede convertir a un DataRowView
luego tomar su propiedad Row
para obtener un DataRow
si desea trabajar con esa clase.
foreach (var item in checkedListBox1.CheckedItems)
{
var row = (item as DataRowView).Row;
MessageBox.Show(row["ID"] + ": " + row["CompanyName"]);
}
Necesitaría convertir o analizar los elementos a sus equivalentes fuertemente tipados, o usar el espacio de nombres System.Data.DataSetExtensions
para usar el método DataRowExtensions.Field
que se muestra a continuación:
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);
}
Debe lanzar el elemento para acceder a las propiedades de su clase.
foreach (var item in checkedListBox1.CheckedItems)
{
var company = (Company)item;
MessageBox.Show(company.Id + ": " + company.CompanyName);
}
Alternativamente, puede usar el método de extensión OfType
para obtener resultados fuertemente tipeados sin tener que emitir explícitamente dentro del bucle:
foreach (var item in checkedListBox1.CheckedItems.OfType<Company>())
{
MessageBox.Show(item.Id + ": " + item.CompanyName);
}
Para obtener todos los elementos seleccionados en un CheckedListBox intente esto:
En este caso, este valor es una cadena, pero se ejecuta con otro tipo de objeto:
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());
}
}
Puede iterar sobre la propiedad CheckedItems
:
foreach(object itemChecked in checkedListBox1.CheckedItems)
{
MyCompanyClass company = (MyCompanyClass)itemChecked;
MessageBox.Show("ID: /"" + company.ID.ToString());
}
http://msdn.microsoft.com/en-us/library/system.windows.forms.checkedlistbox.checkeditems.aspx
Puedes probar esto:
string s = "";
foreach(DataRowView drv in checkedListBox1.CheckedItems)
{
s += drv[0].ToString()+",";
}
s=s.TrimEnd('','');
tratar:
foreach (var item in chlCompanies.CheckedItems){
item.Value //ID
item.Text //CompanyName
}
Blog de desarrollo de Egipto: obtenga el valor del elemento marcado en CheckedListBox en vb.net
después de vincular CheckedListBox con los datos, puede obtener el valor de los elementos marcados
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
ahora puede usar el valor o la visualización de los elementos marcados en CheckedListBox desde la variable 2 XDisplayMember y XValueMember en el bucle
Espero ser útil.
foreach (int x in chklstTerms.CheckedIndices)
{
chklstTerms.SelectedIndex=x;
termids.Add(chklstTerms.SelectedValue.ToString());
}