Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/120: Рейтинг темы: голосов - 120, средняя оценка - 4.94
6 / 6 / 1
Регистрация: 04.10.2009
Сообщений: 37

ListView выбор элемента

22.10.2009, 23:16. Показов 24083. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую.

Пишу файловый менеджер, но возникла проблемка.

Когда устанавливаю автоматом выбор элементта

C#
1
2
3
                    
lvDiri.Selected = true;
lvDiri.Focused = true;
он устанавливается, но если нажать энтер то получаем ошибку
"В экземпляре объекта не задана ссылка на объект."

как можно решить данную проблему ?

Также прошу у кого есть время проанализировать код, и дать рекомендации что улучшать...

ФМ в аттаче
Вложения
Тип файла: zip sCommander.zip (355.7 Кб, 998 просмотров)
1
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.10.2009, 23:16
Ответы с готовыми решениями:

ListView выбор элемента
Есть handle ListView'a чужой программа, вопрос в том, как выбрать определенный элемент из него не прибегая к координатам, потому что...

ListView не работает выбор элемента
Доброго времени суток. Который день мучаюсь. Не знаю как поменять цвет ListView, так что бы не сбить работу выбора элемента при нажатии....

Забиндить команду к ListView на выбор элемента
Хочу в соотвестии с патерном MVVM убрать обработку выбора элемента в свой ViewModel. Как должна выглядить такая команда, и как добавить ее...

11
7 / 7 / 0
Регистрация: 21.10.2009
Сообщений: 33
23.10.2009, 18:10
ты не поверишь, у меня твой код сначала вызвал эту ошибку, но после добавления любого события на keyPress
C#
1
if (e.KeyChar == 13) {}
ошибка перестала после 2 раза
ЗС. совет - почитай про virtualmode в listView а то если будет много файлов, долго ждать
0
6 / 6 / 1
Регистрация: 04.10.2009
Сообщений: 37
23.10.2009, 18:27  [ТС]
Цитата Сообщение от W03L Посмотреть сообщение
ты не поверишь, у меня твой код сначала вызвал эту ошибку, но после добавления любого события на keyPress
C#
1
if (e.KeyChar == 13) {}
ошибка перестала после 2 раза
ЗС. совет - почитай про virtualmode в listView а то если будет много файлов, долго ждать
увы не помогло
про virtualmode почитаю
0
7 / 7 / 0
Регистрация: 21.10.2009
Сообщений: 33
23.10.2009, 19:12
если не помогло - сделай ексепшн, если первая строчка по присваиванию == null, тогда ничего не делать.
Либо удали всё в папках BIN и OBJ и перекомпиль. Такое ощущение, что программа опережает события, и в итоге указанный итем получается null до того как он будет обработан.
0
6 / 6 / 1
Регистрация: 04.10.2009
Сообщений: 37
23.10.2009, 19:56  [ТС]
Цитата Сообщение от W03L Посмотреть сообщение
если не помогло - сделай ексепшн, если первая строчка по присваиванию == null, тогда ничего не делать.
Либо удали всё в папках BIN и OBJ и перекомпиль. Такое ощущение, что программа опережает события, и в итоге указанный итем получается null до того как он будет обработан.
можно пример ? не совсем понял суть...

Добавлено через 7 минут
сделал вот такое:

C#
1
2
3
4
5
            foreach (ListViewItem si in lvLeft.SelectedItems)
            {
                MessageBox.Show(si.Text);
                MessageBox.Show(si.Focused.ToString());
            }
si.Focused.ToString() возвращает false

Добавлено через 12 минут
если делать проверку в самом построении, то si.Focused.ToString() возвращает true

чем значение true может изменится на false ?
0
7 / 7 / 0
Регистрация: 21.10.2009
Сообщений: 33
23.10.2009, 21:04
в обработчике lvLeft_ItemActivate добавляешь строку
C#
1
if (lvLeft.FocusedItem == null) return;
дополнительно (в глубоком дебуге)
и пытаешься у себя в коде ещё добавить событие до этого (методом тыка), <чтобы определить, почему у тебя при нажатии enter получается null>
(экстримальное программирование)
Серьёзно, ошибка была но потом изчезла (обратись на форум мелкософт по c#)
0
6 / 6 / 1
Регистрация: 04.10.2009
Сообщений: 37
25.10.2009, 20:35  [ТС]
продолжим мучения

сделал простой пример

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
 
namespace WindowsFormsApplication3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            for (int i = 0; i < 100; i++)
            {
 
                ListViewItem lvi = new ListViewItem(new string[] { i.ToString() });
 
                if (i == 3)
                {
                    lvi.Focused = true;
                    lvi.Selected = true;
                    lvi.Checked = true;
                    lvi.EnsureVisible();
                }
                
                listView1.Items.Add(lvi);
            }
        }
 
        private void listView1_ItemActivate(object sender, EventArgs e)
        {
            string Changed = listView1.FocusedItem.Text;
            MessageBox.Show(Changed);
        }
    }
}


как видно на скрине под цифрой 1 фактически выбранный элемент, который показывается по нажатию enter а должен быть 3й...

у кого какие варианты ?
0
6 / 6 / 1
Регистрация: 04.10.2009
Сообщений: 37
25.10.2009, 20:36  [ТС]
добавил сам проект
Вложения
Тип файла: zip WindowsFormsApplication3.zip (40.5 Кб, 815 просмотров)
0
6 / 6 / 1
Регистрация: 04.10.2009
Сообщений: 37
25.10.2009, 20:55  [ТС]
вылечил вот так, не знаю в чем фишка но пашет...

C#
1
2
3
4
            lv.Items[1].Selected = true;
            lv.Items[1].Focused = true;
            lv.Items[1].EnsureVisible();
            lv.Focus();
0
1923 / 428 / 41
Регистрация: 12.07.2007
Сообщений: 2,062
26.10.2009, 03:35
MSDN:
Примечание.
Элементы отображаются как выбранные только в том случае, если элемент управления ListView имеет фокус. Для осуществления выбора в ответ на действие пользователя, например нажатие кнопки, в дополнение к установке значения этого свойства необходимо вызвать метод Focus.
0
6 / 6 / 1
Регистрация: 04.10.2009
Сообщений: 37
26.10.2009, 13:54  [ТС]
Цитата Сообщение от Green Посмотреть сообщение
MSDN:
как я уже писал код не работает так:

C#
1
2
3
4
5
6
7
8
9
10
11
            for (int i = 0; i < 20; i++)
            {
                ListViewItem lvi = new ListViewItem(new string[] { i.ToString() });
                if (i == 5)
                {
                    lvi.Selected = true;
                    lvi.Focused = true;
                }
                listView1.Items.Add(lvi);
            }
            listView1.Focus();
0
1923 / 428 / 41
Регистрация: 12.07.2007
Сообщений: 2,062
26.10.2009, 16:47
C#
1
2
3
4
5
6
7
8
9
10
11
            listView1.Focus();
            for (int i = 0; i < 20; i++)
            {
                ListViewItem lvi = new ListViewItem(new string[] { i.ToString() });
                listView1.Items.Add(lvi);
                if (i == 5)
                {
                    lvi.Selected = true;
                    lvi.Focused = true;
                }
            }
И так?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.10.2009, 16:47
Помогаю со студенческими работами здесь

ListView. Выбор элемента при клике правой кнопкой мыши
Нужно, чтобы при клике правой кнопки мыши по элементу выбирался этот самый элемент TreeView. Как перевести на него фокус, я знаю. А как...

Как осуществить прокрутку элемента управления в ListView до заданного элемента
Собственно вопрос в названии...Видел как это делают на VB если кто то может перевести с него могу предоставить...

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

Множественный выбор в listview
вот так создается список class AdapterHelper{ String name = {&quot;Первый&quot;,&quot;Второй&quot;,&quot;Третий&quot;}; int img =...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru