Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.02.2010, 12:36   #1
Casper-SC
Форумчанин
 
Регистрация: 04.07.2007
Сообщений: 549
По умолчанию ListView получить выделенный Item

Здрасте, подскажите пожалуйста, как получить индекс выделенного итема в ListView? Много всего перепробовал, не получается, только не нужен такой вариант:
Код:
            foreach (ListViewItem currentItem in listViewFileRun.SelectedItems)
                listViewFileRun.Items.Remove(currentItem);
Он не подходит.
Просто к итему привязан объект, а в объекте путь к файлу который нужно запустить:
Код:
System.Diagnostics.Process.Start(this.listViewFileRun.???????);
Casper-SC вне форума Ответить с цитированием
Старый 26.02.2010, 12:50   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Свойство SelectedIndex.
Описание и пример см в хелпе.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.02.2010, 13:00   #3
Casper-SC
Форумчанин
 
Регистрация: 04.07.2007
Сообщений: 549
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Свойство SelectedIndex.
Описание и пример см в хелпе.
Например я в списке выделил строчку и нажимаю кнопку "Запустить" и запускается программа, которая привязана к этой выделенной строчке, в событии нажатия на кнопке я пишу код и там нету свойства такого:
Код:
        private void btnTest_Click(object sender, EventArgs e)
        {
            ListViewItem currentItem = this.listViewFileRun.SelectedIndices;
            //System.Diagnostics.Process.Start(????);
        }
или
Код:
ListViewItem currentItem = this.listViewFileRun.SelectedItems;
Но это не один Итем и следовательно я не могу получить нужный мне индекс
Casper-SC вне форума Ответить с цитированием
Старый 26.02.2010, 14:49   #4
dampirik
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 722
По умолчанию

Код:
 protected void GridView1_RowDeleting(Object sender, GridViewDeleteEventArgs e)
{
textBox1.Text=GridView1.Rows[e.RowIndex].Cells[2].Text.ToString();
}
dampirik вне форума Ответить с цитированием
Старый 26.02.2010, 15:24   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну не знаю...
У меня
Код:
        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            this.Text = listBox1.SelectedIndex.ToString(); 
        }
Прекрасно в 2010ке все работает...
Или ты имеешь ввиду что ты несколько из них выделяешь?
Ну оже не сложно:
Код:
        private void button1_Click(object sender, EventArgs e)
        {
            foreach (var a in listBox1.SelectedItems) {
                this.Text = this.Text+a.ToString();
            }
        }
При этом для ЛистБокса выставь свойство SelectionMode в MultiSimple
I'm learning to live...

Последний раз редактировалось Stilet; 26.02.2010 в 15:28.
Stilet вне форума Ответить с цитированием
Старый 26.02.2010, 17:38   #6
Casper-SC
Форумчанин
 
Регистрация: 04.07.2007
Сообщений: 549
По умолчанию

Дело в том, что мне нужен не ListBox, а ListView. В первом посту описана суть вопроса. Выделять нужно 1 и получить его индекс для дальнейшей работы с ним по его индексу, то есть надо знать индекс выделенного элемента.

Последний раз редактировалось Casper-SC; 26.02.2010 в 17:42.
Casper-SC вне форума Ответить с цитированием
Старый 26.02.2010, 17:46   #7
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

Если у твоего ListView стоит multiselect, то юзер может выделить несколько элементов одновременно, если нет, то
Код:
ListViewItem currentItem = this.listViewFileRun.SelectedIndices[0];
Hollander вне форума Ответить с цитированием
Старый 26.02.2010, 17:59   #8
BOZKURT
Пользователь
 
Регистрация: 14.10.2009
Сообщений: 70
По умолчанию

Заполнение:
Код:
for (int i = 0; i < 10; i++)
            {

                ListViewItem item = new ListViewItem();
                WayForFile wayForFile = new WayForFile();
                wayForFile.Way = "Way " + i.ToString();
                wayForFile.EnabledFile = true;
                
                item.Text = "File №" + i.ToString();
                item.Tag = wayForFile;
                listView1.Items.Add(item);
            }
Использование (MultiSelect = true):
Код:
            WayForFile wayForFile = (WayForFile)listView1.FocusedItem.Tag;
            System.Diagnostics.Process.Start(wayForFile.Way);
BOZKURT вне форума Ответить с цитированием
Старый 26.02.2010, 21:41   #9
Casper-SC
Форумчанин
 
Регистрация: 04.07.2007
Сообщений: 549
По умолчанию

Всем спасибо, я сделал так:
Код:
    struct WayForFile
    {
        /// <summary>
        /// Полный путь для запуска
        /// </summary>
        public String Way;   //

        /// <summary>
        /// Название (заголовок)
        /// </summary>
        public String Title; //

        /// <summary>
        /// Имя запускаемого файла, без пути
        /// </summary>
        public String FileName; //

        /// <summary>
        /// Папка где находится файл
        /// </summary>
        public String FilePath; //

        /// <summary>
        /// Параметры запуска для запускаемого приложения
        /// </summary>
        public String Parameters;

        /// <summary>
        /// Включён ли файл для запуска
        /// </summary>
        public bool EnabledFile; //

        /// <summary>
        /// Сосотояние окна (Нормальное, Свёрнутое, Развёрнутое)
        /// </summary>
        public int WindowMode;
Нажатие по кнопке "Добавить":
Код:
        private void btnAddObject_Click(object sender, EventArgs e)
        {
            FormAddNewFileForRun formAddNewFile = new FormAddNewFileForRun();
            if (formAddNewFile.ShowDialog(this) == DialogResult.OK)
            {
                int i = this.listViewFileRun.Items.Add(formAddNewFile.textBoxName.Text).Index;
                this.listViewFileRun.Items[i].SubItems.Add(formAddNewFile.textBoxFileName.Text);
                this.listViewFileRun.Items[i].SubItems.Add(formAddNewFile.textBoxWayForFile.Text);
                WayForFile WayFile = new WayForFile();
                WayFile.Way = formAddNewFile.textBoxWayForFile.Text + "\\" + formAddNewFile.textBoxFileName.Text;
                WayFile.Title = formAddNewFile.textBoxName.Text;
                WayFile.FilePath = formAddNewFile.textBoxWayForFile.Text;
                WayFile.FileName = formAddNewFile.textBoxFileName.Text;
                WayFile.Parameters = formAddNewFile.textBoxParameters.Text;
                WayFile.WindowMode = formAddNewFile.comboBoxStyleWindow.SelectedIndex;
                this.listViewFileRun.Items[i].Tag = WayFile;
            }
        }
Нажатие по кнопке "Проверить":
Код:
        private void btnTest_Click(object sender, EventArgs e)
        {
            try
            {
                WayForFile WayFile = (WayForFile)listViewFileRun.FocusedItem.Tag;
                System.Diagnostics.Process.Start(WayFile.Way);
            }
            catch { }
        }
Нажатие на кнопке "Изменить":
Код:
        private void btnChangeObject_Click(object sender, EventArgs e)
        {
            FormAddNewFileForRun formAddNewFileForRun = new FormAddNewFileForRun();
            int i = this.listViewFileRun.FocusedItem.Index;
            WayForFile WFF = (WayForFile)this.listViewFileRun.FocusedItem.Tag;
            formAddNewFileForRun.textBoxFileName.Text = WFF.FileName;
            formAddNewFileForRun.textBoxName.Text = WFF.Title;
            formAddNewFileForRun.textBoxWayForFile.Text = WFF.FilePath;
            formAddNewFileForRun.textBoxParameters.Text = WFF.Parameters;
            formAddNewFileForRun.comboBoxStyleWindow.SelectedIndex = WFF.WindowMode;

            if (formAddNewFileForRun.ShowDialog(this) == DialogResult.OK)
            {
                this.listViewFileRun.Items[i].Tag = null;
                this.listViewFileRun.Items[i].Remove();

                int z = this.listViewFileRun.Items.Add(formAddNewFileForRun.textBoxName.Text).Index;
                this.listViewFileRun.Items[z].SubItems.Add(formAddNewFileForRun.textBoxFileName.Text);
                this.listViewFileRun.Items[z].SubItems.Add(formAddNewFileForRun.textBoxWayForFile.Text);
                WayForFile WayFile = new WayForFile();
                WayFile.Way = formAddNewFileForRun.textBoxWayForFile.Text + "\\" + formAddNewFileForRun.textBoxFileName.Text;
                WayFile.Title = formAddNewFileForRun.textBoxName.Text;
                WayFile.FilePath = formAddNewFileForRun.textBoxWayForFile.Text;
                WayFile.FileName = formAddNewFileForRun.textBoxFileName.Text;
                WayFile.Parameters = formAddNewFileForRun.textBoxParameters.Text;
                WayFile.WindowMode = formAddNewFileForRun.comboBoxStyleWindow.SelectedIndex;
                this.listViewFileRun.Items[z].Tag = WayFile;
            }
        }
Далее я полагаю надо создавать массив из WayForFile и привязывать его к моему классу, потом при открытии редактирования моего класса создавать список ListView из этого массива. Я правильно мыслю? Далее будет ещё один список и закреплять надо будет уже те классы, потом сохранять их, загружать, заполнять список. Пишу прогу за которую у меня запросили 50000, попробую сам написать.

Последний раз редактировалось Casper-SC; 26.02.2010 в 22:00.
Casper-SC вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как перетащить элемент ListView в другой ListView? Paul Hindenburg Компоненты Delphi 5 26.01.2013 11:35
Как в ListView показать выделенный элемент? Stilet Компоненты Delphi 2 02.07.2009 12:21
Выделенный компонент Witaliy Общие вопросы Delphi 2 09.06.2008 19:31
Как имея хендл на Memo получить выделенный в нем текст? hoza_syl Помощь студентам 2 23.05.2008 17:06