item checklist checkedlistbox1 checkeditems c# checkedlistbox

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()); } }



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()); }