Привязка TextBox Текстовое значение к ComboBox.SelectedItem и список из выбранного элемента ComboBox к другому ComboBox - PullRequest
0 голосов
/ 17 сентября 2018

Итак, у меня есть класс «Рабочий» и BindingList, который привязан к ComboBox.

    workers = new BindingList<Worker>();
    //// .. An "Add" button is somewhere there to add "Worker" objects to the list
    //ComboBox Workers List
    cbWorkersList.DataSource = workers;
    cbWorkersList.DisplayMember = "Name";

Я хочу связать поле «Текст» в TextBox со свойством «Имя» выбранного объекта «Рабочий» в ComboBox.

Теперь я сделал это с помощью обработчика событий "cbWorkersList_SelectedIndexChanged", изменив вручную свойство txtWorkerName.Text:

private void cbWorkersList_SelectedIndexChanged(object sender, EventArgs e)
{
    if (cbWorkersList.SelectedItem != null)
    {
        txtWorkerName.Text = workers[workers.IndexOf((Worker)cbWorkersList.SelectedItem)].Name;
    }
}

Я пытался связать TextBox следующим образом:

InitializeComponent();
txtWorkerName.DataBindings.Add("Text", cbWorkersList, "Text");

Но обновление TextBox происходит только в том случае, если я щелкаю по другому элементу в списке, если для изменения выбора используются клавиши со стрелками, текстовое поле TextBox не изменяется.

Есть ли способ действительно связать их так, чтобы, если выбран элемент ComboBox, текстовое поле изменилось соответственно?

В этой теме у меня также есть 2 других ComboBox, и я хотел бы привязать 1 к списку, который находится внутри объекта ComboBox других. То, что я хочу, это решение со следующей логикой:

cbPositions.Items = ((<Shift>)cbShifts.SelcetedItem).PositionsList

, когда cbPositions - это ComboBox, который должен быть заполнен объектами «Position». И cbShifts - это ComboBox, который заполняется объектами «Shift», где каждый «Shift» содержит список позиций.

Как их связать, чтобы каждый раз, когда я выбираю другой Shift из списка, ComboBox Positions будет заполняться объектами Position из Shift.PositionList?

А также, я хотел бы знать, возможно ли связать «Элементы» ComboBox со списком (мой список рабочих в этом примере), не с помощью кода, а в конструкторе (Настройки приложения или DataBindings)?

...