c#组合框,使用值和文本保存项目
我试图将一个包含文本和值的对象项添加到组合框中,以便以后阅读c#组合框,使用值和文本保存项目,c#,combobox,C#,Combobox,我试图将一个包含文本和值的对象项添加到组合框中,以便以后阅读 public partial class Form1 : Form { ComboboxItem item; public Form1() { InitializeComponent(); comboBox1.Items.Add(new ComboboxItem("Dormir", 12).Text); } private void button1_Click
public partial class Form1 : Form
{
ComboboxItem item;
public Form1()
{
InitializeComponent();
comboBox1.Items.Add(new ComboboxItem("Dormir", 12).Text);
}
private void button1_Click(object sender, EventArgs e)
{
ComboboxItem c = (ComboboxItem)comboBox1.SelectedItem;
label1.Text = c.Text;
label2.Text = c.Value.ToString();
}
}
问题是,我无法添加完整项,因为它不是字符串…并在单击事件开始时给出异常
额外资料: 这个ComboboxItem是我用两个参数创建的一个类,string和int
public class ComboboxItem
{
public string Text { get; set; }
public object Value { get; set; }
public ComboboxItem(string texto, double valor)
{
this.Text = texto;
this.Value = valor;
}
}
您不需要在(“文本”、“值”)的末尾添加.Text 因此,将其添加为:
comboBox1.Items.Add(new ComboBoxItem("dormir","12"));
通过创建自己的ComboBoxItem类,您的思路是正确的
public class ComboboxItem
{
public string Text { get; set; }
public object Value { get; set; }
}
有两种方法可以使用它(除了构造函数):
方法1:
private void button1_Click(object sender, EventArgs e)
{
ComboboxItem item = new ComboboxItem();
item.Text = "Item text1";
item.Value = 12;
comboBox1.Items.Add(item);
}
方法2:
private void button1_Click(object sender, EventArgs e)
{
ComboboxItem item = new ComboboxItem
{
Text = "Item text1",
Value = 12
};
comboBox1.Items.Add(item);
}
你试过这样添加它吗?然后,当您取出该项目时,只需将其作为ComboboxItem进行转换:)
备选KeyValuePair:
comboBox1.Items.Add(new KeyValuePair("Item1", "Item1 Value"));
基于返回符号字符串值和其他组合框答案的问题。。
您可以(应该)在其他位置设置displaymember和valuemember,但是
public Form1()
{
InitializeComponent();
comboBox1.DisplayMember="Text";
comboBox1.ValueMember ="Value";
comboBox1.Items.Add(new ComboboxItem("Dormir", 12));
}
创建ComboboxItem类并重写ToString方法。 将调用ToString方法来可视化该项。默认情况下,ToString()返回类型名
public class ComboboxItem
{
public object Value{get;set;}
public string Text {get;set;}
public override string ToString(){ return Text; }
}
然后,您可以执行以下操作:
var item = new CombobxItem { Value = 123, Text = "Some text" };
combobox1.Items.Add(item);
值不在文本之前,这里是:它只是ComboBoxItem的ctor。这样,在我的combobox上,将显示“WindowsFormsApplication1.ComboxItem”,而不是“text”。我不明白您的观点@user3249619我提供的代码应该是什么suffice@user3249619您是否有类似于
comboBox1.DisplayMember=“Text”的内容;comboBox1.ValueMember=“Value”
@user3249619您的意思是,要隐藏该值吗?如果我选择“comboBox1.Items.Add(item);”,则在我的ComboxBox上不会显示“item text1”,而是显示“WindowsFormsApplication1.ComboxItem”“您总是可以传入一个KeyValuePair?您可以将您的答案链接到这里吗?”?谢谢这就是我真正想要的!,也许我的英语不好。。我想添加一个项目,但显示文本;)
var item = new CombobxItem { Value = 123, Text = "Some text" };
combobox1.Items.Add(item);