Это довольно простой способ, который должен работать независимо от того, как вы его заполняете, не может придумать более быстрый путь ...
public static DataTable GetListBoxItems(ListBox listBox)
{
DataTable dt = new DataTable();
dt.Columns.Add("Value");
dt.Columns.Add("Text");
dt.Columns.Add("Selected");
dt.Columns.Add("Attributes");
foreach (ListItem itm in listBox.Items)
{
DataRow dr = dt.NewRow();
dr[0] = itm.Value;
dr[1] = itm.Text;
dr[2] = itm.Selected;
dr[3] = itm.Attributes;
dt.Rows.Add(dr);
}
return dt;
}
ИЛИ с методом расширения:
public static class Extensions
{
public static DataTable GetListBoxItems(this ListBox listBox)
{
DataTable dt = new DataTable();
dt.Columns.Add("Value");
dt.Columns.Add("Text");
dt.Columns.Add("Selected");
dt.Columns.Add("Attributes");
foreach (ListItem itm in listBox.Items)
{
DataRow dr = dt.NewRow();
dr[0] = itm.Value;
dr[1] = itm.Text;
dr[2] = itm.Selected;
dr[3] = itm.Attributes;
dt.Rows.Add(dr);
}
return dt;
}
}
Тогда вы можете назвать это так:
ListBox1.GetListBoxItems();