C # combobox і listbox додавання елементів з визначенням значення і тексту, блог доброго

Сьогодні я вирішив зробити невелику замітку про те як додати в елементи управління форми ComboBox, ListBox і інші схожі, значення в зв'язці (значення - відображається текст), як це виглядає, наприклад, в HTML ...

Для тих хто не зовсім зрозумів про що йде мова, поясню на прикладі HTML і елемента управління select. Наприклад у нас потрібно зробити список з текстом «Раз», «Два», «Три». При цьому працюючи зі списком ми хочемо працювати не зі словами, а з числами. Тоді наш select буде виглядати так:

Таким чином, вибираємо «Два», але значення елемента дорівнює «2». Тепер перенесемо це завдання на мову програмування C #. У багатьох програмістів в даному випадку виникає невеликий ступор, так як елементи управління ComboBox і ListBox в методі додавання елементів в список приймають тільки один параметр, який є і значенням, і що відображається текстом. Однак в більшості випадків, нам потрібно розділяти текст і значення.
Принцип роботи з елементами управління форми типу ComboBox і ListBox схожі, тому розглянемо приклад тільки для ComboBox. Додамо елемент на форму, і в методі завантаження форми пропишемо:

Якщо запустити проект, то ми побачимо повідомлення «Два», потім відкриється форма з випадаючому списком і значеннями «раз», «два», «три».
Тепер зробимо так, щоб при запуску програми, нам показувалося повідомлення з цифрою два, при цьому зовнішній вигляд списку не змінився.
Для цього спочатку доведеться створити новий клас (або структуру). В якій ми будемо зберігати потрібні дані, а саме пару (значення - відображається текст):


В цілому клас примітивний, а ключову роль відіграє перевантажений метод ToString (), який визначає як буде відображатися змінна нашого класу при спробі перетворити її в рядок. Як видно з прикладу, в даному випадку наша змінна перетворюється в значення атрибуту Text.
Атрибут Items елементу СomboBox такий, що в якості параметра методу Add отримує об'єкт, а об'єкт - це база для всього, тому наш клас SelectData спокійно підійде. Промальовування елементів списку Items на формі, така, що кожен об'єкт, перекладається в рядок (тут якраз і працює метод ToString).
маємо:

От і все. Тепер при запуску програми ми побачимо повідомлення з цифрою 2. Зберігати в списках можна і важчі складні об'єкти, все залежить від Вашої фантазії і конкретного завдання.