Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将项目从ListBox复制到CheckedListBox_C#_.net_Winforms_Listbox_Checkedlistbox - Fatal编程技术网

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上被选中,然后其他功能就会发生。是的。事实上是从列表框数据源。我所说的选中是指选中。谢谢你