Кнопки «Вверх», «Вниз» для списков в Visual Studio

Я пытаюсь создать кнопку «Вверх» и кнопку «Вниз», чтобы переместить выбранный элемент в ListBox в Microsoft Visual Studio 2012. Я видел другие примеры в WDF, jquery, winforms и некоторых других формах, но я не еще не видел примеров из Microsoft Visual Studio.

Я пробовал что-то вроде этого:

        listBox1.AddItem(listBox1.Text, listBox1.ListIndex - 1);

Но у Microsoft Visual Studio не было свойства «AddItem» в их списках.

Для получения дополнительной информации у меня есть два списка, с которыми я хочу, чтобы мои кнопки перемещения вверх и вниз работали; SelectedPlayersListBox и AvailablePlayersListBox. Будет ли кто-нибудь достаточно любезен, чтобы привести мне примеры кнопки «Вверх» и «Вниз» в Microsoft Visual Studio? Спасибо.


person Cindy    schedule 01.04.2013    source источник
comment
вы используете Winforms?   -  person Anton Semenov    schedule 01.04.2013
comment
Вы немного запутались. Вы не смогли найти метод с именем AddItem в System.Windows.Forms.ListBox в .NET Framework, который не аналогичен Visual Studio.   -  person djv    schedule 01.04.2013
comment
возможный дубликат stackoverflow.com/questions/4796109/   -  person Anton Semenov    schedule 01.04.2013
comment
@AntonSemenov Не совсем Антон. Я использую Microsoft Visual Studio. Да, я тоже проверил этот вопрос, но Visual Studio работает иначе, так что. Вот почему я задаю этот вопрос для получения дополнительной помощи.   -  person Cindy    schedule 01.04.2013
comment
мне до сих пор не ясно, какую технологию вы используете. Вы разрабатываете надстройку Visual Studio или прикладное программное обеспечение?   -  person Anton Semenov    schedule 01.04.2013
comment
@AntonSemenov Привет, Антон, Microsoft Visual Studio — это программное обеспечение для разработки, которое помогает людям создавать приложения.   -  person Cindy    schedule 01.04.2013
comment
о, среди нас есть высокий уровень непонимания ... я понимаю, что вы создаете приложение с помощью визуальной студии ... Язык, который вы используете, - C #, но что такое тип проекта? Возможно, вы используете winforms или WPF. для каждого варианта возможны два подварианта - вы используете стандартные компоненты (они поставляются с VS) и сторонние компоненты. Который ваш?   -  person Anton Semenov    schedule 01.04.2013
comment
Что ж, Антон, вы можете запускать многопроцессорные сборки для всех типов проектов с помощью Microsoft Visual Studio, но, я думаю, для каждого типа проектов есть разные свойства, но они работают одинаково. :) Я не мог вспомнить, что такое AddItem, и это оказалось проще, чем я думал. В Visual Studio мы использовали бы .Items, а затем .Add   -  person Cindy    schedule 01.04.2013
comment
@Cindy Опять же, вы говорите об IDE, а все остальные говорят о фреймворке.   -  person djv    schedule 01.04.2013
comment
@DanVerdolino О. :/ Может поэтому у меня кнопки не хотели двигаться. х.х   -  person Cindy    schedule 01.04.2013
comment
@Cindy Как тебе этот сарказм? Ответить на ваш вопрос еще?   -  person djv    schedule 01.04.2013
comment
@DanVerdolino Нет, но я все еще пытаюсь найти информацию о том, как заставить работать мои кнопки перемещения. Спасибо, что проверили меня. :П   -  person Cindy    schedule 02.04.2013


Ответы (2)


Ответ без сарказма. Наслаждаться

private void btnUp_Click(object sender, EventArgs e)
{
    MoveUp(ListBox1);
}

private void btnDown_Click(object sender, EventArgs e)
{
    MoveDown(ListBox1);
}

void MoveUp(ListBox myListBox)
{
    int selectedIndex = myListBox.SelectedIndex;
    if (selectedIndex > 0)
    {
        myListBox.Items.Insert(selectedIndex - 1, myListBox.Items[selectedIndex]);
        myListBox.Items.RemoveAt(selectedIndex + 1);
        myListBox.SelectedIndex = selectedIndex - 1;
    }
}

void MoveDown(ListBox myListBox)
{
    int selectedIndex = myListBox.SelectedIndex;
    if (selectedIndex < myListBox.Items.Count - 1 & selectedIndex != -1)
    {
        myListBox.Items.Insert(selectedIndex + 2, myListBox.Items[selectedIndex]);
        myListBox.Items.RemoveAt(selectedIndex);
        myListBox.SelectedIndex = selectedIndex + 1;

    }
}
person djv    schedule 02.04.2013
comment
Привет (: Ты лучший. - person Cindy; 03.04.2013
comment
Вау замечательный. Спасибо. - person Christopher D. Emerson; 25.09.2018

Вы ищете ListBox.Items.Add()

Для движения вверх должно работать что-то вроде этого:

void MoveUp()
{
    if (listBox1.SelectedItem == null)
        return;

    var idx = listBox1.SelectedIndex;
    var elem = listBox1.SelectedItem;
    listBox1.Items.RemoveAt(idx);
    listBox1.Items.Insert(idx - 1, elem);
}

для перемещения вниз просто измените idx - 1 на idx + 1

person Nefarion    schedule 01.04.2013
comment
Как насчет части ListIndex? - person Cindy; 01.04.2013
comment
@Nefarion Я бы также предложил сбросить SelectedIndex/Item после повторного добавления elem. - person Cemafor; 01.04.2013
comment
Спасибо, Нефарион. Ошибок нет, но элемент не перемещается :C - person Cindy; 01.04.2013