Listbox.selected присвоение переменной для изменения индекса - PullRequest
4 голосов
/ 03 апреля 2011

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

Я использую:

variablename = listbox.text

в событии listBox_SelectedIndexChanged, и это работает.

Когда я использую событие button_click, я использую:

variablename = listbox.selectedindex 

Но это не работает в событии listbox_selectedindexchanged.

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

Спасибо!

Ответы [ 2 ]

4 голосов
/ 03 апреля 2011

A.Похоже, ваша переменная является строкой, и все же вы пытаетесь присвоить ей значение, возвращаемое свойством SelectedIndex, которое является целым числом.

B.Если вы пытаетесь получить значение элемента, связанного с SelectedINdex списка, используйте индекс для возврата самого объекта (список представляет собой список объектов, которые часто, но не всегда, будут строками).

Private Sub ListBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
    'THIS retrieves the Object referenced by the SelectedIndex Property (Note that you can populate
    'the list with types other than String, so it is not a guarantee that you will get a string
    'return when using someone else's code!):
    SelectedName = ListBox1.Items(ListBox1.SelectedIndex).ToString
    MsgBox(SelectedName)
End Sub

ЭТО немного более прямолинейно, используя свойство SelectedItem:

Private Sub ListBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged

    'This returns the SelectedItem more directly, by using the SelectedItem Property
    'in the event handler for SelectedIndexChanged:
    SelectedName = ListBox1.SelectedItem.ToString
    MsgBox(SelectedName)

End Sub
2 голосов
/ 03 апреля 2011

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

Есть несколько возможных способов, позвольте мне попытаться объяснить некоторые из них для вашей домашней работы.

Предположим,у вас есть таблица данных с двумя столбцами и их строками ...

ID    Title
_________________________
1     First item's title
2     Second item's title
3     Third item's title

И вы связываете эту таблицу данных со своим списком как,

ListBox1.DisplayMember = "ID";
ListBox1.ValueMember = "Title";

Если пользователь выбирает второй элементиз списка.

Теперь, если вы хотите получить отображаемое значение (Заголовок) выбранного элемента, вы можете сделать

string displayValue = ListBox1.Text;   // displayValue = Second item's title

ИЛИ даже это, чтобы получить те же результаты.

// displayValue = Second item's title
string displayValue = ListBox1.SelectedItem.ToString();

И чтобы получить значение элемента против выбранного элемента, вам нужно сделать

string selectedValue = ListBox1.SelectedValue;    // selectedValue = 2

Теперь существуют ситуации, когда вы хотите позволить пользователю выбрать более одного элемента изсписок, так что вы затем установите

ListBox1.SelectionMode = SelectionMode.MultiSimple;

ИЛИ

ListBox1.SelectionMode = SelectionMode.MultiExtended;

Теперь предположим, если пользователь выбирает два элемента;второй и третий.

Таким образом, вы можете получить отображаемые значения, просто перебирая SelectedItems

string displayValues = string.Empty;
foreach (object selection in ListBox1.SelectedItems)
{
    displayValues += selection.ToString() + ",";
}

// so displayValues = Second item's title, Third item's title,

И если вы хотите получить ID's вместо Title's, тогда...

Я также просматриваю его, выложу, если найдет.

Надеюсь, ваше понимание будет построено.

Удачи!

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