Вы можете сделать это несколькими способами.Я покажу вам два, но первое предпочтительнее второго. (я понял после написания этого, второй способ не применим, поэтому я воздержался от его добавления)
Привязка данных
Хорошая вещь оБольшинство элементов управления коллекцией состоит в том, что в них встроен довольно приличный механизм привязки данных.Вы можете использовать это для привязки элемента управления к коллекции более строго типизированных Объектов для последующего извлечения.
Прежде всего, вам нужен объект, представляющий нужную вам информацию:
public class RegKeyInfo
{
public String SubKeyPath { get; set; }
public String Name { get; set; }
}
Итак, теперь у вас есть тип, в котором будут храниться как желаемое производное имя, так и SubKeyPath для последующего использования.
Теперь нам нужно сообщить комбинированному списку, как он должен обрабатывать объект такого типа.Мы можем установить это в конструкторе форм.Обычно вы можете сделать это через дизайнера, но вам проще показать это здесь.
public Form1()
{
InitializeComponent();
comboBox1.ValueMember = "SubKeyPath";
comboBox1.DisplayMember = "Name";
}
Теперь вы сказали ComboBox
, что когда вы даете ему Object
,он должен искать свойство с именем "Name" и использовать его для отображения, а также использовать свойство "SubKeyPath" для Value
.
вместодобавляя элементы вручную к ComboBox
, мы собираемся создать коллекцию нашего типа RegKeyInfo
и "привязать" ее к ComboBox
.
private void Form1_Load(object sender, EventArgs e)
{
//http://www.dreamincode.net/code/snippet1995.htm
//Declare the string to hold the list:
var keys = new List<RegKey>();
//Snip...
UserProfileComboBox = UserProfile.Substring(9);
keys.Add(new RegKey {
Name = UserProfileComboBox,
KeyPath = skName
});
//Snip...
comboBox1.DataSource = keys;
}
. Большое различие заключается в использованиисвойства DataSource
, которое указывает ComboBox
использовать привязку данных на основе предоставленной вами информации.
Когда кто-то выбирает значение из ComboBox
,вы можете получить доступ к свойству SelectedValue
и получить SubKeyPath, к которому оно привязано.Попробуйте добавить этот обработчик события в событие SelectedValueChanged
, чтобы увидеть, о чем я говорю:
void comboBox1_SelectedValueChanged(object sender, EventArgs e)
{
MessageBox.Show(comboBox1.SelectedValue as String);
}