powered by simpleCommunicator - 2.0.33     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Загадка ListView.ColumnHeaderCollection
15 сообщений из 15, страница 1 из 1
Загадка ListView.ColumnHeaderCollection
    #39844981
MsGuns
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте !

Пытаюсь по имени заголовка колонки найти ее индекс для извлечения значения ячейки в строке.

Код: c#
1.
2.
3.
4.
5.
using System.Collections;

...

for (int i = 0; i < lwFiles.ColumnHeaderCollection.Count; i++)



На что получаю:
Ошибка 1 "ColumnHeaderCollection": невозможно сослаться на тип через выражение; попытайтесь использовать "System.Windows.Forms.ListView.ColumnHeaderCollection"


В мануалах написано, что все вроде делаю верно, однако же :(

Спасибо за подсказки и советы.
...
Рейтинг: 0 / 0
Загадка ListView.ColumnHeaderCollection
    #39844986
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MsGunsВ мануалах написано, что все вроде делаю верноПокажи пожалуйста хоть один мануал, где написано, что класс ColumnHeaderCollection можно использовать как свойство ListView

ЗЫ: Нужное тебе свойство называется Columns

Загадка....да.
...
Рейтинг: 0 / 0
Загадка ListView.ColumnHeaderCollection
    #39844994
MsGuns
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProMsGunsВ мануалах написано, что все вроде делаю верноПокажи пожалуйста хоть один мануал, где написано, что класс ColumnHeaderCollection можно использовать как свойство ListView

ЗЫ: Нужное тебе свойство называется Columns

Загадка....да.

https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.listview.columnheadercollection?view=netframework-4.8

Как через Columns добраться до хедеров, не подскажете ?

Ибо https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.listview.columns?view=netframework-4.8
...
Рейтинг: 0 / 0
Загадка ListView.ColumnHeaderCollection
    #39844997
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MsGuns https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.listview.columnheadercollection?view=netframework-4.8 Это описание класса, а не свойства. Неудивительно что C# так не нравится, коль не потрудился изучить основы.

MsGunsКак через Columns добраться до хедеров, не подскажете ?Columns - это и есть коллекция хедеров, до каких ещё хедеров нужно добраться?
...
Рейтинг: 0 / 0
Загадка ListView.ColumnHeaderCollection
    #39844999
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MsGunsпо имени заголовка колонки найти ее индекс
как-то так:
Код: c#
1.
var index = lwFiles.Columns.Cast<ColumnHeader>().Select((n, i) => n.Text == "MyHeader" ? i : -1).First(i => i >= 0);
...
Рейтинг: 0 / 0
Загадка ListView.ColumnHeaderCollection
    #39845002
MsGuns
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProMsGunsпо имени заголовка колонки найти ее индекс
как-то так:
Код: c#
1.
var index = lwFiles.Columns.Cast<ColumnHeader>().Select((n, i) => n.Text == "MyHeader" ? i : -1).First(i => i >= 0);



"Последовательность не содержит соответствующий элемент". А хедер такой есть. Пробовал и по Name и по Text
...
Рейтинг: 0 / 0
Загадка ListView.ColumnHeaderCollection
    #39845003
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
			var lw = new ListView();
			lw.Columns.Add(new ColumnHeader { Text = "123" });
			lw.Columns.Add(new ColumnHeader { Text = "456" });
			lw.Columns.Add(new ColumnHeader { Text = "789" });
			var index = lw.Columns.Cast<ColumnHeader>().Select((n, i) => n.Text == "456" ? i : -1).First(i => i > 0);
			MessageBox.Show(index.ToString());


"От нас пули вылетают. Проблема на вашей стороне" (с)
...
Рейтинг: 0 / 0
Загадка ListView.ColumnHeaderCollection
    #39845004
MsGuns
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro
Код: c#
1.
2.
3.
4.
5.
6.
			var lw = new ListView();
			lw.Columns.Add(new ColumnHeader { Text = "123" });
			lw.Columns.Add(new ColumnHeader { Text = "456" });
			lw.Columns.Add(new ColumnHeader { Text = "789" });
			var index = lw.Columns.Cast<ColumnHeader>().Select((n, i) => n.Text == "456" ? i : -1).First(i => i > 0);
			MessageBox.Show(index.ToString());


"От нас пули вылетают. Проблема на вашей стороне" (с)

Колонки я добавлял в дизайнере. Ваш код по-прежнему у меня не работает
...
Рейтинг: 0 / 0
Загадка ListView.ColumnHeaderCollection
    #39845005
MsGuns
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блин, все работает на всех колонках, кроме самой левой :(

В любом случае, большое спасибо за решение, хотя наполовину непонятное. Будем изучать "основы" :)
...
Рейтинг: 0 / 0
Загадка ListView.ColumnHeaderCollection
    #39845010
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MsGunsБлин, все работает на всех колонках, кроме самой левой :(да, в моем проверочном коде есть опечатка (должно быть i>=0), но в изначальном коде 21941343 этой ошибки нет
...
Рейтинг: 0 / 0
Загадка ListView.ColumnHeaderCollection
    #39845067
MsGuns
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решил проблему так:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
        private void lwScoresFiles_SelectedIndexChanged(object sender, EventArgs e)
        {
            ListView LW = (sender as ListView);
            var selectedItems = (sender as ListView).SelectedItems;
            int nRow = 0;
            foreach (ListViewItem item in selectedItems)
            {
                nRow = Int32.Parse(item.SubItems[0].Text);
                DBC_FILEID = Int32.Parse(item.SubItems[item.SubItems.Count - 1].Text);
            }
            DB_ShowProcess(lbDBProcessText, "Запись " + nRow.ToString() + " из "+ DBC_FILESCOUNT.ToString() + ", ID = " + DBC_FILEID.ToString(),  false);
        }



Возможно, не так красиво, зато просто и работает :)

PS. Да, чуть не забыл - MultiSelect = false
...
Рейтинг: 0 / 0
Загадка ListView.ColumnHeaderCollection
    #39845069
MsGuns
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Только сейчас заметил - первая строка лишняя. Забыл убрать после экспериментов :)
...
Рейтинг: 0 / 0
Загадка ListView.ColumnHeaderCollection
    #39845071
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да тут половина строк лишняя. Зачем вообще нужен цикл, если MultiSelect = false?
...
Рейтинг: 0 / 0
Загадка ListView.ColumnHeaderCollection
    #39845076
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
        private void lwScoresFiles_SelectedIndexChanged(object sender, EventArgs e)
        {
            var item = (sender as ListView).SelectedItems[0];
            DBC_FILEID = Int32.Parse(item.SubItems[item.SubItems.Count - 1].Text);
            DB_ShowProcess(lbDBProcessText, $"Запись {item.SubItems[0].Text} из {DBC_FILESCOUNT}, ID = {DBC_FILEID}",  false);
        }
...
Рейтинг: 0 / 0
Загадка ListView.ColumnHeaderCollection
    #39847662
MsGuns
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro
Код: c#
1.
2.
3.
4.
5.
6.
        private void lwScoresFiles_SelectedIndexChanged(object sender, EventArgs e)
        {
            var item = (sender as ListView).SelectedItems[0];
            DBC_FILEID = Int32.Parse(item.SubItems[item.SubItems.Count - 1].Text);
            DB_ShowProcess(lbDBProcessText, $"Запись {item.SubItems[0].Text} из {DBC_FILESCOUNT}, ID = {DBC_FILEID}",  false);
        }



Так, безусловно, красивее. Спасибо :)
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Загадка ListView.ColumnHeaderCollection
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]