Пример использования combobox для показа "названия" и записи "Ид"
/// <summary>Заполнить источник ComboBox данными из таблицы из указанных колонок</summary>
/// <param name="cmb">ComboBox - получатель</param>
/// <param name="tbl">таблица-источник</param>
/// <param name="displayName">наименование колонки для DisplayMember</param>
/// <param name="valueName">наименование колонки для ValueMember</param>
/// <returns></returns>
public static bool SetColumnToComboBox(ComboBox cmb, DataTable tbl,
string displayName, string valueName = null)
{
int idx = 1;
cmb.Items.Clear();
int iDisplayCol = tbl.Columns.IndexOf(displayName);
int iValueCol = (valueName != null) ? tbl.Columns.IndexOf(valueName) : -1;
if (iDisplayCol < 0) {
throw new System.ArgumentException("SetColumnToComboBox. Display Column not found", displayName);
return false; }
for (int iRow = 0; iRow < tbl.Rows.Count; iRow++)
{
string sValue;
int iId;
try
{
iId = (valueName != null) ?
((tbl.Rows[iRow][iValueCol] != null) ?
(int)tbl.Rows[iRow][iValueCol]
: -1)
: idx;
sValue = (tbl.Rows[iRow][iDisplayCol] != null) ? tbl.Rows[iRow][iDisplayCol].ToString() : "<>";
if (sValue.Length > 0) cmb.Items.Add(new KeyValuePair<int, string>(iId, sValue));
}
catch (Exception ex) { MessageBox.Show("Ошибка SetColumnToComboBox" + ex.Message); }
idx++;
}
return true;
}
Допустим, Ваша таблица работников называется "tblWorker" и имеет поля Id,Name. Поле "Name" должно быть видно в списке.
Такую функцию можно использовать так:
SetColumnToComboBox(cmbSelectWorker,"tblWorker","Name","Id")
Соответственно свойства контрола cmbSelectWorker "DisplayMember" - наименование работника и "ValueMember" идентификатор работника. Можно использовать для записи в таблицу "Машины"