vasanthkumarmk Ответов: 2

Значение выбранного элемента управления ListView


Я использую приложение windows с использованием C#.

В моем проекте у меня есть один элемент управления ListView (Listview1), 2 текстовых поля (txtbox1,txtbox2) и 1 кнопка (btnsubmit).

ListView содержит пять элементов (яблоко,апельсин,графики,банан,папайя).

Из списка я должен выбрать(с помощью мыши)самый верхний первый элемент (Apple). Затем я ввел в txtbox1 некоторые значения (например:123), снова я могу выбрать второй элемент (Оранжевый) из Listview, затем я ввел в txtbox1 некоторые другие значения (например:789), снова я могу выбрать третий элемент (графики) из Listview, затем я ввел в txtbox1 некоторые значения (например:456).

Что я ожидаю, если я выберу первый элемент (Apple) из Listview, txtbox2 покажет значение 123, если я выберу второй элемент (Оранжевый) из Listview, то txtbox2 покажет значение 789, если я выберу третий элемент (графики) из Listview, то txtbox3 покажет значение 456.

Надеюсь, все поняли мой вопрос. Если кто - то не понимает, я готов объяснить еще раз. Мне нужно это решение очень срочно дайте мне решение как можно скорее

С уважением
Васант

vasanthkumarmk

Если кто - то не понимает моего объяснения, пожалуйста, не стесняйтесь спрашивать, я готов объяснить. Но дайте решение очень скоро.

BobJanova

Не уверен, что это были вы, но при голосовании по решению, пожалуйста, помните, что 5* = хорошо и 1* = плохо.

Кроме того, "срочно" означает "люди пропустят ваш вопрос, потому что вы слишком требовательны". Если это так срочно, вы уже должны знать достаточно, чтобы выполнить свою задачу, а не ожидать, что незнакомые люди сделают это за вас.

vasanthkumarmk

к

2 Ответов

Рейтинг:
8

vasanthkumarmk

уважаемый друг,

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

private void button1_Click(object sender, EventArgs e)
       {
           if (Listview1.SelectedItems.Count > 0)
           {
               Listview1.SelectedItems[0].Tag = txtbox1.Text;
               txtbox1.Text = "";
               txtbox2.Text = Listview1.SelectedItems[0].Tag.ToString();
               string a = Listview1.SelectedItems[0].Tag.ToString();
               MessageBox.Show("File Name of " + Listview1.SelectedItems[0].Text + " set " + a.ToString() + "  Milli Seconds");
                             
           }
           else
           {
               MessageBox.Show("Please select an item before assigning a value.");
           }
       }

       private void Listview1_SelectedIndexChanged(object sender, EventArgs e)
       {
           try
           {
               if (Listview1.SelectedItems.Count > 0)
               {

                   txtbox2.Text = Listview1.SelectedItems[0].Tag.ToString();

               }
           }
           catch { } 
       }


Рейтинг:
2

Reelix

Правильный способ сделать это - использовать массивы.

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

Ниже предполагается, что значение сохраняется при нажатии кнопки.

private void listView1_SelectedIndexChanged(object sender, EventArgs e)
        {
            txtbox1.Text = "";
            
            // Added to prevent errors when nothing was selected
            if (listView1.SelectedItems.Count > 0)
            {
                if (listView1.SelectedItems[0].Tag != null)
                {
                    txtbox2.Text = listView1.SelectedItems[0].Tag.ToString();
                }
                else
                {
                    txtbox2.Text = "";
                }
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (listView1.SelectedItems.Count > 0)
            {
                listView1.SelectedItems[0].Tag = txtbox1.Text;
                txtbox1.Text = "";
                MessageBox.Show("Value for " + listView1.SelectedItems[0].Text + " set.");
            }
            else
            {
                MessageBox.Show("Please select an item before assigning a value.");
            }
        }


vasanthkumarmk

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

vasanthkumarmk

if (Listview1.SelectedItems[0].Tag != null) Эта строка показывает этот тип ошибки

"InvalidArgument=значение '0' недопустимо для 'index'.
Имя параметра: индекс "

Reelix

Это произойдет, если вы отмените выбор каждого элемента - никакие элементы не будут выбраны, и поэтому индекс 0 недействителен.

Просто добавьте:

если (мыши listview1.Свойство selecteditems.Count > 0)

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

vasanthkumarmk

к я могу это изменить

vasanthkumarmk

textBox2.Text = Listview1.SelectedItems[0].Tag.ToString(); эта строка показывает этот тип ошибки
Пустая ссылка исключение было обработано
Ссылка на объект не устанавливается на экземпляр объекта.

Reelix

То:

if (listView1.SelectedItems[0].Tag != null)

Должно компенсировать это.

Я изменил решение, включив в него вышеприведенную рекомендацию.