выберите тот же индекс в списке

Я делаю веб-сайт в asp.net, и у меня есть 2 списка:

lbxPlayer1 and lbxPlayer2

lbxPlayer1.Items.Add("bob");
lbxPlayer1.Items.Add("jack");
lbxPlayer1.Items.Add("sam");

lbxPlayer2.Items.Add("fred");
lbxPlayer2.Items.Add("brian");
lbxPlayer2.Items.Add("dave");

они оба были заполнены одинаковым количеством значений, и я хотел бы, чтобы при нажатии одного из списков другой список выбирал тот же индекс.

Как мне это сделать? я предполагаю, что код будет в событии lbxPlayer1_SelectedIndexChanged?

поэтому, когда я нажимаю «джек», я хочу, чтобы «Брайан» также был выбран.


person brian4342    schedule 02.03.2013    source источник


Ответы (1)


Используйте свойство SelectedIndex:

int index = lbxPlayer1.SelectedIndex;
if(lbxPlayer2.Items.Count > index)
   lbxPlayer2.SelectedIndex = index;

If SelectionMode is Multiple:

for (int i = 0; i < lbxPlayer2.Items.Count; i++)
{ 
    if(i >= lbxPlayer1.Items.Count)
        lbxPlayer2.Items[i].Selected = false;
    else
        lbxPlayer2.Items[i].Selected = lbxPlayer1.Items[i].Selected;
}

Обновить

ну попробовал и ничего не получилось тоже попробовал это и тоже ничего не получается lbxPlayer2.SelectedIndex = lbxPlayer1.SelectedIndex;. Привязка дня выполняется в событии загрузки страницы (которое я не могу изменить), что, как я считаю, всегда o

Привязывайте их только к данным if(!IsPostBack), так как ViewState будут сохранять элементы между обратными передачами. Поэтому я предполагаю, что это событие никогда не запускается, потому что вы перепривязываете ListBoxes к обратным передачам.

person Tim Schmelter    schedule 02.03.2013
comment
он не использует несколько, и верхний код, который вы разместили, не работает - person brian4342; 03.03.2013
comment
оба списка имеют одинаковое количество значений, поэтому, если в обоих списках 10 элементов, и я выбираю элемент с индексом 0, опубликованный вами статус if не сработает. - person brian4342; 03.03.2013
comment
@BrianPeach, почему это? 10 › 0 - person MikeSmithDev; 03.03.2013
comment
ну, он попробовал, и ничего не произошло, также попробовал это, и тоже ничего не происходит :\ lbxPlayer2.SelectedIndex = lbxPlayer1.SelectedIndex; - person brian4342; 03.03.2013
comment
@BrianPeach: Конечно, второй тоже не сработал, так как это тот же код, что и у меня, только без if. Я уверен, что lbxPlayer2.SelectedIndex=0 тоже не работает. Возможно, вы выполняете привязку данных lbxPlayer2 после того, как изменили файл SelectedIndex. Это объясняет, почему вы не можете изменить выбор. - person Tim Schmelter; 03.03.2013
comment
хорошо, я думаю, что вы правы, дневная привязка выполняется в событии загрузки страницы (которое я не могу изменить), что, как я полагаю, всегда происходит, мешая этому работать - person brian4342; 03.03.2013
comment
@BrianPeach: привязывайте их только к данным if(!IsPostBack), так как ViewState сохранит элементы между обратными передачами. Поэтому я предполагаю, что это событие никогда не запускается, потому что вы перепривязываете ListBoxes к обратным передачам. - person Tim Schmelter; 03.03.2013
comment
добавлено if(!IsPostBack) и по-прежнему без разницы, код выполняется, но ничего не делает: s - person brian4342; 04.03.2013
comment
@BrianPeach: Вы должны обновить свой вопрос, иначе никто не узнает, что вы сейчас пробовали и каков был результат. - person Tim Schmelter; 04.03.2013