using System;
using System.Windows.Forms;
namespace WindowsFormsApplication14
{
public class MyItem
{
private string key;
private string value;
public MyItem()
{
}
public MyItem(string key, string value)
{
this.Key = key;
this.Value = value;
}
public string Key
{
get { return key; }
set { key = value; }
}
public string Value
{
get { return this.value; }
set { this.value = value; }
}
public override string ToString()
{
return value;
}
}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.comboBox1.SelectedIndexChanged += new EventHandler(comboBox1_SelectedIndexChanged);
}
private void Form1_Load(object sender, EventArgs e)
{
this.comboBox1.Items.Add(new MyItem("aa", "item 1"));
this.comboBox1.Items.Add(new MyItem("bb", "item 2"));
this.comboBox1.Items.Add(new MyItem("cc", "item 3"));
}
void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
MyItem mi = (MyItem)comboBox1.SelectedItem;
MessageBox.Show("key: " + mi.Key + " value: " + mi.Value );
}
}
}
элементы формы win приложения
в asp.net элементы форм ListBox и ComboBox содержат пары ключ-значение. можно ли добиться от них аналогичной функциональности в windows приложении? то есть, чтоб они содержали не просто набор строк, а пары ключ-значение.
И размещать это сообщение следовало бы в WinAPI.
если тебе не нужно лишь расширить свойства айтемсов для хранения пары "ключ-значение", то можешь воспользоваться таким примером:
Код:
private void Form1_Load(object sender, EventArgs e)
{
Dictionary<string, string> myItems = new Dictionary<string, string>();
myItems.Add("aa", "item 1");
myItems.Add("bb", "item 2");
myItems.Add("cc", "item 3");
comboBox1.DisplayMember = "Value";
comboBox1.ValueMember = "Key";
comboBox1.DataSource = new BindingSource(myItems, null);
//comboBox1.SelectedValue = "cc";
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
MessageBox.Show(comboBox1.SelectedValue.ToString());
}
{
Dictionary<string, string> myItems = new Dictionary<string, string>();
myItems.Add("aa", "item 1");
myItems.Add("bb", "item 2");
myItems.Add("cc", "item 3");
comboBox1.DisplayMember = "Value";
comboBox1.ValueMember = "Key";
comboBox1.DataSource = new BindingSource(myItems, null);
//comboBox1.SelectedValue = "cc";
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
MessageBox.Show(comboBox1.SelectedValue.ToString());
}
а вообще уже сделал отдельный частный массив со значениями.