2014-11-09 2 views
0

У меня есть форма, которая загружает 3 заранее определенных показателя в списке. Я хочу преобразовать выбранный балл в строку, а затем вывести эту строку в текстовое поле. Пока я думаю, что я преобразовал элемент в строку и попытался установить его в текстовое поле, но он, похоже, не работает.Проверьте, не выбран ли элемент списка

private void frmStudentScores_Load(object sender, EventArgs e) 
     { 
      lstStudents.Items.Clear(); 
      lstStudents.Items.Add("Joe Smith|93|92|98"); 
      lstStudents.Items.Add("Mike Jones|56|61|33"); 
      lstStudents.Items.Add("Rita Jackson|100|89|96"); 
      lstStudents.SelectedIndex = 0; 
      if (this.lstStudents.SelectedIndex >= 0) 
      { 
       string a = lstStudents.Items.Cast<string>().ToString(); 
       txtDisplay.Text = a; 
      } 
      btnUpdate.Enabled = false; 
+1

если вы установили 'SelectedIndex' в 0 (это означает, что выбран первый элемент), вы не можете ожидать, что оно будет'> = 0' на самой следующей строке. Не уверен, что это то, что «не работает» – Plutonix

ответ

0

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

txtDisplay.Text =lstStudents.SelectedItem.ToString(); 

Распространено хотите получить выбранный элемент, который пользователь выбрал, чтобы сделать это, вам необходимо поместить код выше в случае смотреть как это, например:

private void lstStudents_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      txtDisplay.Text = this.lstStudents.SelectedItem.ToString(); 
     } 

событие может быть подключен к элементу управления либо с помощью кода или через VS IDE, вы не можете просто скопировать и вставить код выше. Спросите меня, не знаете, как это сделать.

Если вы хотите захватить только первый элемент, то применяется плутонический комментарий выше. Вам не нужен оператор IF.

+0

Спасибо, это было проще, чем то, что я пытался сделать. –

0

Поскольку это процесс во время загрузки, то почему бы не попробовать просто:

private void frmStudentScores_Load(object sender, EventArgs e) 
     { 
      lstStudents.Items.Clear(); 
      lstStudents.Items.Add("Joe Smith|93|92|98"); 
      lstStudents.Items.Add("Mike Jones|56|61|33"); 
      lstStudents.Items.Add("Rita Jackson|100|89|96"); 
      lstStudents.SelectedIndex = 0; 
      txtDisplay.Text = lstStudents.Items[0].ToString(); 
      btnUpdate.Enabled = false; 

EDIT

затем добавить в событии ListBox в SelectedIndexChanged:

private void lstStudents_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      txtDisplay.Text = lstStudents.Items[lstStudents.SelectedIndex].ToString(); 
     } 
+0

Я хочу, чтобы текст текстового поля дисплея менялся, если я выбираю другой элемент –

+0

@jahiranderson см. В редакции – chouaib

Смежные вопросы