C# 如何将组合框项插入列表框?[winforms]
问题很简单,, 如何使用c#将组合框所选项目插入列表框 我试过这样做:C# 如何将组合框项插入列表框?[winforms],c#,winforms,combobox,listbox,C#,Winforms,Combobox,Listbox,问题很简单,, 如何使用c#将组合框所选项目插入列表框 我试过这样做: listbox.Items.Add(combobox.SelectedItem); 和其他一些排列,但它总是显示System.Data.DataRowView或类似的内容 编辑:这个问题是由这个2 lbList.DisplayMember = "hm"; lbList.ValueMember = "ID"; Ante我认为问题来自comboBox.SelectedItem,它返回一个对象,在您的例子中,该对象恰好是Sys
listbox.Items.Add(combobox.SelectedItem);
和其他一些排列,但它总是显示System.Data.DataRowView或类似的内容
编辑:这个问题是由这个2
lbList.DisplayMember = "hm";
lbList.ValueMember = "ID";
Ante我认为问题来自comboBox.SelectedItem,它返回一个对象,在您的例子中,该对象恰好是System.Data.DataRowView。我认为您需要将combobox.selectedItem转换为一个值。我是一个VB爱好者,所以不确定C的语法,但在VB中,我们会这样做:
DirectCast(combobox.SelectedItem, DataRowView).Foo
foo是您想要传递给列表框的任何值
如果您打算在列表框中包含组合框的值,另一个可能有效的选项是使用:
combobox.selectedvalue
这将返回和对象,但实际上它是组合框中显示的对象,不管它是字符串、int等。不确定这是否有帮助,但我过去不得不做一些非常类似的事情,这就是我提出的解决方案。组合框的选定项是DataRowView,列表框正在调用
DataRowView.ToString()
,以确定要显示的内容
你也可以
对象
转换为组合框的返回值。选择editem
至数据行视图
,然后添加要显示的列的值。(即listbox.Items.Add(((DataRowView)combobox.SelectedItem.FieldName);
ToString()
。这可能是您已经为comboxbox做过的事情,否则它也会显示“System.Data.DataRowView”这个例子很好用。要使用对象(取消对行的注释),请确保设置了
DisplayMember
属性,注意我不必强制转换,因为我使用了该属性
public partial class Form1 : Form
{
private void Form1_Load(object sender, EventArgs e)
{
List<string> x = new List<string>();
x.Add("A");
x.Add("B");
x.Add("C");
x.Add("D");
x.Add("B");
List<Client> z = new List<Client>();
z.Add(new Client() { Name = "A" });
z.Add(new Client() { Name = "B" });
z.Add(new Client() { Name = "C" });
comboBox.Items.AddRange(x.ToArray());
//comboBox.DisplayMember = "Name";
//listBox.DisplayMember = "Name";
//comboBox.Items.AddRange(z.ToArray());
}
private void comboBox_SelectedIndexChanged(object sender, EventArgs e)
{
listBox.Items.Add(comboBox.SelectedItem);
}
}
public class Client
{
public string Name { get; set; }
}
公共部分类表单1:表单
{
私有void Form1\u加载(对象发送方、事件参数e)
{
列表x=新列表();
x、 添加(“A”);
x、 添加(“B”);
x、 添加(“C”);
x、 添加(“D”);
x、 添加(“B”);
列表z=新列表();
z、 添加(新客户端(){Name=“A”});
z、 添加(新客户端(){Name=“B”});
z、 添加(新客户端(){Name=“C”});
comboBox.Items.AddRange(x.ToArray());
//comboBox.DisplayMember=“Name”;
//listBox.DisplayMember=“Name”;
//comboBox.Items.AddRange(z.ToArray());
}
private void组合框\u SelectedIndexChanged(对象发送方,事件参数e)
{
listBox.Items.Add(comboBox.SelectedItem);
}
}
公共类客户端
{
公共字符串名称{get;set;}
}
您可以在(未键入的)行轻松获取:
之后,如果您知道列名,这取决于您需要什么列:
object value = row["Column"];
listbox.Items.Add(value);
如果您先选中并排除null,它应该可以工作。它可以工作,但会显示字符串“Systm.Data.DataRowView”,这将是非常有价值的信息,可以包含在您的问题中:-{tnx寻求帮助,第二个解决了问题,但slugster首先提到了这一点。因此我必须给他“nike符号”
object value = row["Column"];
listbox.Items.Add(value);