C# 将项目从ListBox复制到CheckedListBox
有许多问题与这个问题相反,不幸的是,没有一个对我有用。我有以下代码来实现我的目标:C# 将项目从ListBox复制到CheckedListBox,c#,.net,winforms,listbox,checkedlistbox,C#,.net,Winforms,Listbox,Checkedlistbox,有许多问题与这个问题相反,不幸的是,没有一个对我有用。我有以下代码来实现我的目标: foreach (var item in listBox1.Items) { checkedListBox1.Items.Add(item); } 问题是,当我这样做时,我不会得到列表框中的值,而是System.Data.DataRowView项。因此,我的CheckedListBox中正好填充了这个System.Data.DataRowView字符串,它们都是相同的,不显示实际的字符串值 编辑:我以这
foreach (var item in listBox1.Items)
{
checkedListBox1.Items.Add(item);
}
问题是,当我这样做时,我不会得到列表框
中的值,而是System.Data.DataRowView
项。因此,我的CheckedListBox
中正好填充了这个System.Data.DataRowView
字符串,它们都是相同的,不显示实际的字符串值
编辑:我以这种方式绑定到列表视图
:我有一个数据表ds
,并且:
listBox1.DataSource = ds;
您需要执行如下所示的演员阵容:
foreach (var item in listBox1.Items)
{
checkedListBox1.Items.Add((ListItem)item);
}
或者您可以这样使用:
foreach (ListItem item in listBox1.Items)
{
checkedListBox1.Items.Add(item);
}
即使这样也可能对您有所帮助(如果您需要文本和值,也可以这样使用)
for(int i=0;i您需要执行如下转换:
foreach (var item in listBox1.Items)
{
checkedListBox1.Items.Add((ListItem)item);
}
或者您可以这样使用:
foreach (ListItem item in listBox1.Items)
{
checkedListBox1.Items.Add(item);
}
即使这样也可能对您有所帮助(如果您需要文本和值,也可以这样使用)
for(int i=0;i当这些控件绑定到数据源时,由类(如CheckedListBox)显示的文本由属性控制。此属性等于表示数据源中属性(或columnname)名称的字符串
因此,在将新项目添加到checkedlistbox之前,我建议您编写
checkedListBox1.DataSource = listBox1.DataSource
checkedListBox1.DisplayMember = listBox1.DisplayMember
checkedListBox1.ValueMember = listBox1.ValueMember
无需创建一个循环来读取源列表框中的所有项目,只需使用相同的数据源,您就可以准备好了当这些控件绑定到数据源时,类(如CheckedListBox)显示的文本由属性控制。此属性等于表示属性名称的字符串(或列名称)在数据源中
因此,在将新项目添加到checkedlistbox之前,我建议您编写
checkedListBox1.DataSource = listBox1.DataSource
checkedListBox1.DisplayMember = listBox1.DisplayMember
checkedListBox1.ValueMember = listBox1.ValueMember
无需创建一个循环来读取源列表框中的所有项目,只需使用相同的数据源,您就可以准备好了
foreach (var dataRowView in listBox1.Items.OfType<DataRowView>())
{
checkedListBox1.Items.Add(dataRowView[0].ToString());
}
foreach(listBox1.Items.OfType()中的var dataRowView)
{
checkedListBox1.Items.Add(dataRowView[0].ToString());
}
试试这个:
foreach (var dataRowView in listBox1.Items.OfType<DataRowView>())
{
checkedListBox1.Items.Add(dataRowView[0].ToString());
}
foreach(listBox1.Items.OfType()中的var dataRowView)
{
checkedListBox1.Items.Add(dataRowView[0].ToString());
}
由于未知原因,数据源
、显示成员
和值成员
属性对于选中列表框
控件是隐藏的
如果要复制列表框项文本,正确的方法是使用如下方法
foreach (var item in listBox1.Items)
checkedListBox1.Items.Add(listBox1.GetItemText(item));
class MyListItem
{
public object Value;
public string Text;
public override string ToString() { return Text; }
}
但是这样很难找到检查了哪个源对象(例如在枚举时)。更好的方法是这样定义自己的类
foreach (var item in listBox1.Items)
checkedListBox1.Items.Add(listBox1.GetItemText(item));
class MyListItem
{
public object Value;
public string Text;
public override string ToString() { return Text; }
}
和使用
foreach (var item in listBox1.Items)
checkedListBox1.Items.Add(new MyListItem { Value = item, Text = listBox1.GetItemText(item) });
由于未知原因,DataSource
、DisplayMember
和ValueMember
属性对于CheckedListBox
控件是隐藏的
如果要复制列表框项文本,正确的方法是使用如下方法
foreach (var item in listBox1.Items)
checkedListBox1.Items.Add(listBox1.GetItemText(item));
class MyListItem
{
public object Value;
public string Text;
public override string ToString() { return Text; }
}
但是这样很难找到检查了哪个源对象(例如在枚举时)。更好的方法是这样定义自己的类
foreach (var item in listBox1.Items)
checkedListBox1.Items.Add(listBox1.GetItemText(item));
class MyListItem
{
public object Value;
public string Text;
public override string ToString() { return Text; }
}
和使用
foreach (var item in listBox1.Items)
checkedListBox1.Items.Add(new MyListItem { Value = item, Text = listBox1.GetItemText(item) });
那么如何绑定到列表框
?您是否将CheckedListBox的DisplayMember属性设置为与列表框相同的值?在ds
中有什么?listbox
的DisplayMember和value成员是什么?@Steve列表框的DisplayMember属性设置为none。我没有看到CheckedListBox没有hat属性。那么如何绑定到列表框
?您是否将CheckedListBox的DisplayMember属性设置为与列表框相同的值?在ds
中有什么?列表框
的Display和value成员是什么?@Steve列表框的DisplayMember属性设置为none。我没有看到Checkedlistbox具有该属性。感谢您的输入。不幸的是,我只针对.NET 3.5,所以我没有访问ListItem类的权限。这被标记为WinForms
,感谢您的输入。不幸的是,我只针对.NET 3.5,所以我没有访问ListItem类的权限。不幸的是,这被标记为WinForms
,对我不起作用仍然得到相同的字符串:“System.Data.DataRowView”@Iason但Listbox工作正常?如果是,则用于设置Listbox数据源的ds变量不是DataView,可能是DataSet?此DataSet有多个表吗?如果是,则还有属性DataMember,用于消除显示Listbox内容所用表的歧义。您还应将此设置为jn t他检查了listbox是的,listbox工作正常。ds是一个数据表,就像我在原始问题上所说的。我应该使用dt来避免混淆。我无法想象这个例子中失败的地方。这里的其他答案允许你达到你的目标,尽管我有一种感觉,这里有些东西在起作用,但不幸的是,对我来说不起作用,我仍然得到答案相同的字符串:“System.Data.DataRowView”@Iason但Listbox工作正常?如果是,则用于设置Listbox数据源的ds变量不是DataView,可能是DataSet?此DataSet有多个表吗?如果是,则还有属性DataMember,用于消除显示Listbox内容所用表的歧义。您还应将此设置为jn t他检查了listbox是的,listbox工作正常。ds是一个数据表,就像我在原始问题上所说的。我应该使用dt来避免混淆。我无法想象这个例子中失败的地方。这里的其他答案允许你达到你的目标,尽管我感觉这里有些东西在起作用。谢谢。当你说“哪个源对象被选中”,你是说从listBox1?我打算在不久的将来添加一个事件,这样每当用户单击checkedlistbox项时,它也会在listBox上被选中,然后其他功能就会发生。是的。事实上是从列表框数据源。我所说的选中是指选中。谢谢你