C listview select item

У меня есть свойство MultiSelect для набора listView равным false, и я пытаюсь получить один listViewItem. Но доступное свойство SelectedItems . Я использовал следующий код.

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

Обычно SelectedItems возвращает коллекцию, массив или IQueryable .

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

Кстати, вы всегда можете сохранить элемент, который хотите просмотреть, в var lookat = whatever you want и проверить его структуру в локалях после установки точки останова.

Иногда использование только строки ниже вызывает меня Exception,

поэтому я использую этот код ниже:

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

Если у меня есть нагрузки, то переместите его в класс-помощник lil:

Интерфейс ListView немного мусор, поэтому я обычно нахожу, что вспомогательный класс растет довольно быстро

Ни один из вышеперечисленных ответов, по крайней мере для меня, не показывает, как фактически обрабатывать определение того, есть ли у вас 1 элемент или несколько, и как фактически получать значения из ваших предметов в общем виде, который не зависит от того, на самом деле только один элемент или несколько, поэтому я бросаю свою шляпу в кольцо.

Это довольно легко и в общем случае выполняется путем проверки вашего счета, чтобы увидеть, что у вас есть хотя бы один элемент, а затем сделать цикл foreach на .SelectedItems , отбросив каждый элемент как DataRowView :

Это будет работать, есть ли у вас 1 элемент или много. Смешно, что MSDN говорит, чтобы использовать ListView.SelectedListViewItemCollection для захвата listView1.SelectedItems и повторить это, но я обнаружил, что это дало ошибку в моем Приложение WPF: The type name ‘SelectedListViewItemCollection’ does not exist in type ‘ListView’ .

Для ситуации в корзине, где я рекомендую. Я собираюсь разбить его на простую форму.

Читайте также:  Расшифровка вин кода киа рио

Предполагая, что мы начнем с этого (просмотр списка с двумя колонками, двумя кнопками и меткой):

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

Теперь вторая строка обновляет наши метки, используя следующую функцию, которую я опубликую, чтобы добавить все общее число столбца 2 в список:

Вам не нужно использовать десятичную дробь, как я, вы можете использовать float или int, если у вас нет десятичных знаков. Так что позвольте сломать его. Мы используем цикл for для суммирования всех элементов в столбце 2 (SubItems [1].Text). Добавьте это к десятичному знаку, которое мы объявили перед циклом foreach, чтобы сохранить итоговое значение. Если вы хотите сделать налог, вы можете сделать что-то вроде:

или независимо от вашей налоговой ставки.

Длинные и короткие, используя эту функцию, вы можете восстановить свой список, просто вызвав функцию. Вы можете изменить текст меток, как показано выше, если это то, что вам нужно.

I’m trying to select the first item in a ListView programmatically, but it doesn’t appear to have been selected. I am using the following code:

Actually I’ve had this problem before but I can’t remember how I managed to solve it!

7 Answers 7

Most likely, the item is being selected, you just can’t tell because a different control has the focus. There are a couple of different ways that you can solve this, depending on the design of your application.

The simple solution is to set the focus to the ListView first whenever your form is displayed. The user typically sets focus to controls by clicking on them. However, you can also specify which controls gets the focus programmatically. One way of doing this is by setting the tab index of the control to 0 (the lowest value indicates the control that will have the initial focus). A second possibility is to use the following line of code in your form’s Load event, or immediately after you set the Selected property:

Читайте также:  1С как посмотреть временную таблицу в запросе

The problem with this solution is that the selected item will no longer appear highlighted when the user sets focus to a different control on your form (such as a textbox or a button).

To fix that, you will need to set the HideSelection property of the ListView control to False. That will cause the selected item to remain highlighted, even when the control loses the focus.

When the control has the focus, the selected item’s background will be painted with the system highlight color. When the control does not have the focus, the selected item’s background will be painted in the system color used for grayed (or disabled) text.

You can set this property either at design time, or through code:

У меня есть свойство MultiSelect для набора listView равным false, и я пытаюсь получить один listViewItem. Но доступное свойство SelectedItems . Я использовал следующий код.

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

Обычно SelectedItems возвращает либо коллекцию, массив или IQueryable .

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

Кстати, вы можете сохранить элемент, на который хотите посмотреть, в переменную, и проверить его структуру в локальных системах после установки точки останова.

Иногда использование только строки ниже вызывает меня Exception,

поэтому я использую этот код ниже:

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

Если у меня есть нагрузки, то перенесите их в вспомогательный класс:

Интерфейс ListView немного мусор, поэтому обычно я считаю, что вспомогательный класс растет довольно быстро.

Читайте также:  Как вставить в header картинку

Для ситуации в корзине, где я рекомендую. Я собираюсь разбить его на простую форму.

Предполагая, что мы начнем с этого (просмотр списка с двумя колонками, двумя кнопками и меткой):

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

Теперь вторая строка обновляет наши метки, используя следующую функцию, которую я опубликую, чтобы добавить все общее число столбца 2 в список:

Вам не нужно использовать десятичную дробь, как я, вы можете использовать float или int, если у вас нет десятичных знаков. Так что позвольте сломать его. Мы используем цикл for для суммирования всех элементов в столбце 2 (SubItems [1].Text). Добавьте это к десятичному знаку, которое мы объявили перед циклом foreach, чтобы сохранить итоговое значение. Если вы хотите сделать налог, вы можете сделать что-то вроде:

или независимо от вашей налоговой ставки.

Длинные и короткие, используя эту функцию, вы можете восстановить свой список, просто вызвав функцию. Вы можете изменить текст меток, как показано выше, если это то, что вам нужно.

Ни один из вышеперечисленных ответов, по крайней мере для меня, не показывает, как фактически обрабатывать определение того, есть ли у вас 1 элемент или несколько, и как фактически получать значения из ваших предметов в общем виде, который не зависит от того, на самом деле только один элемент или несколько, поэтому я бросаю свою шляпу в кольцо.

Это довольно легко и в общем случае выполняется путем проверки вашего счета, чтобы увидеть, что у вас есть хотя бы один элемент, а затем сделать цикл foreach на .SelectedItems , отбросив каждый элемент как DataRowView :