Выбор объектов в поле списка с помощью C#

Вам необходимо сбросить массив 'programNames', как только вы сдвинете состояние CheckBox следующим способом. Поскольку .subscribe () или другие методы обратного вызова имеют асинхронный характер. Эти асинхронные методы не будут применять немедленный эффект при переключении CheckBox до тех пор, пока не будет запущено событие подписки.

showInactivePrograms() {
    this.programNames = [];
    if (this.programChecked) {
        this.programService.getInActiveProgramNames().subscribe(data => {
        this.programNames = data;
    });
    }
    else {
        this.programService.getActiveProgramNames().subscribe(data => {
            this.programNames = data;
        });
    }
}

Надеюсь, это поможет решить вашу проблему!

6
задан Nasreddine 22 May 2012 в 12:18
поделиться

2 ответа

Поместите событие SelectionChanged в свое первое поле списка

LB1.SelectionChanged += LB1_SelectionChanged;

Затем реализуйте метод SelectionChanged как так:

void LB1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    LB2.SelectedItems.Clear();
    foreach(var selected in LB1.SelectedItems)
    {
        LB2.SelectedItems.Add(selected);
    }
}
10
ответ дан 10 December 2019 в 00:45
поделиться

Вы пробовали SetSelected?

listBox2.SetSelected(1, True)

Можно использовать его как это

private void DoLB2Selection()
{
   // Loop through all items the ListBox.
   for (int x = 0; x < listBox1.Items.Count; x++)
   {
      // Determine if the item is selected.
      if(listBox1.GetSelected(x) == true)
         // Deselect all items that are selected.
         listBox2.SetSelected(x,true);
   }

используйте выбранные пункты от LB1 как индекс в LB2

0
ответ дан 10 December 2019 в 00:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: