powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Listview (ReportView) Часть столбцов "скрыта" -чтоб нельзя было раздвинуть?
10 сообщений из 10, страница 1 из 1
Listview (ReportView) Часть столбцов "скрыта" -чтоб нельзя было раздвинуть?
    #38424730
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо:
Установить ширину столбца в ноль и исключить любые способы сделать столбец видимым.

API-реализация:
Как лучше реализовать Add/Remove Columns на Listview?

В .NET есть механизм?
Предполагаю, что:
ListView.ColumnWidthChanging - событие
Происходит при изменении ширины столбца.
Это событие позволяет ... а также при необходимости отменить это событие путем установки для свойства Cancel значения true.

Оно?
...
Рейтинг: 0 / 0
Listview (ReportView) Часть столбцов "скрыта" -чтоб нельзя было раздвинуть?
    #38424777
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77,

если нужен невидимый столбец, то просто удаляй его
...
Рейтинг: 0 / 0
Listview (ReportView) Часть столбцов "скрыта" -чтоб нельзя было раздвинуть?
    #38424811
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pationесли нужен невидимый столбец, то просто удаляй его
Так нельзя. Если данные не видны, это не значит что они не используются при каких-то действиях, там ID записи например может быть.
Надо именно так как я сказал. Это стандартная конструкция (пользователь выбирает, что отображать, а что нет, и в какой последовательности - на свой вкус).

Счас, попробую, думаю то что я предположил по делу.
...
Рейтинг: 0 / 0
Listview (ReportView) Часть столбцов "скрыта" -чтоб нельзя было раздвинуть?
    #38424815
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77pationесли нужен невидимый столбец, то просто удаляй его
Так нельзя. ... там ID записи например может быть...
Ъ! Доколе! Ответьте на вопрос - "там" это где?
...
Рейтинг: 0 / 0
Listview (ReportView) Часть столбцов "скрыта" -чтоб нельзя было раздвинуть?
    #38424862
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77Если данные не видны, это не значит что они не используются при каких-то действиях

Отдели данные от представления
...
Рейтинг: 0 / 0
Listview (ReportView) Часть столбцов "скрыта" -чтоб нельзя было раздвинуть?
    #38424875
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77Счас, попробую, думаю то что я предположил по делу.Слушай, а зачем задавать вопросы до того, как испробовал все подходящие варианты? Тут вообще кода меньше, чем ты потратил на эти два поста.
...
Рейтинг: 0 / 0
Listview (ReportView) Часть столбцов "скрыта" -чтоб нельзя было раздвинуть?
    #38424927
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buserДмитрий77Так нельзя. ... там ID записи например может быть...
Ответьте на вопрос - "там" это где?Там - это в LVitem.subitems (тот, чей столбец надо скрыть)
Например, удаляя строчку, надо удалить запись из БД, сразу выбрав ее по ID

А удаляя столбец, я создаю необходимость писать кучу дополнительного кода при выполнении разных действий (например пользователь решил отобразить столбец). Так не делают.
Не говоря о том, что последовательность столбцов (Column.Index а не .DisplayIndex) зарезервирована, и во избежании гемороев лучше здесь не мудрить.

ИзопропилОтдели данные от представления
Ты говоришь об общей стратегии.
А меня конкретно здесь и сейчас интересует простой технический вопрос, достаточно четко сформулированный:
Дмитрий77Надо:
Установить ширину столбца в ноль и исключить любые способы сделать столбец видимым.

Antonariy Слушай, а зачем задавать вопросы до того, как испробовал все подходящие варианты? Тут вообще кода меньше, чем ты потратил на эти два поста.
.Net - это красивая коробка с полезными рычажками, но я то названия всех рычажков пока не знаю.
Строчка то м.б. вообще одна, но я б например до этого
Изопропила Marshal.StringToCoTaskMemAnsi никак не подойдёт? с ходу б не допер.

А иногда надо просто влезть в эту коробку. . Там без вариантов было. Либо костыли(.Net методами) в помощь инвалиду с его рычажками(чтоб хоть как-то передвигался), либо операция (но без понимания внутреннего API устройства не получилось бы) -после чего задуманные рычажки заработали правильно. Теперь понимаешь почему я предпочитаю "родные" контролы, а не стрипы?

А по сути вопроса, да 2 строчки:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
  Private Sub ListView1_ColumnWidthChanging(ByVal sender As Object,
   ByVal e As System.Windows.Forms.ColumnWidthChangingEventArgs) Handles ListView1.ColumnWidthChanging
    Debug.WriteLine("Changing" & e.ColumnIndex.ToString)
    If (IsMovePossible(e.ColumnIndex) = False) Then
      e.NewWidth = 0
      e.Cancel = True
    End If
  End Sub

  Private Function IsMovePossible(ByVal n As Integer) As Boolean
    'можно ли менять ширину столбца с номером n в ListView1 (скрыт/не скрыт)
... 


Хотя один момент таки непонятен.
Код: vbnet
1.
e.Cancel = True

согласно документации... а также при необходимости отменить это событие путем установки для свойства Cancel значения trueуже должно быть достаточно, но без
Код: vbnet
1.
e.NewWidth = 0

не работает.
И наоборот, установка e.NewWidth в нуль по здравому смыслу тоже должно работать без e.Cancel, но тоже не работает.
Приходится писать обе строчки чтоб "застопорить".
С другой стороны, после чекбоксов это не удивляет. Что есть то есть.

Antonariy, да прав ты конечно, много полезного времени на эти посты уходит. Привычка. Зато пока пишу, лучше осознаю предмет, потом могу что-то быстро найти.
...
Рейтинг: 0 / 0
Listview (ReportView) Часть столбцов "скрыта" -чтоб нельзя было раздвинуть?
    #38424991
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77,

идёшь не тем путём
применяй сразу общий подход.
...
Рейтинг: 0 / 0
Listview (ReportView) Часть столбцов "скрыта" -чтоб нельзя было раздвинуть?
    #38424994
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77,

чем грид не устроил, зачем мучить листбокс который не поддерживает связывания с данными?
Только потому что он похож на инвалида из древнего mscomctl.ocx?
...
Рейтинг: 0 / 0
Listview (ReportView) Часть столбцов "скрыта" -чтоб нельзя было раздвинуть?
    #38425088
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилидёшь не тем путём
применяй сразу общий подход.
У каждого свой путь и свой общий подход. Я путь наметил и иду по нему.

Изопропилчем грид не устроил, зачем мучить листбокс который не поддерживает связывания с данными?
Только потому что он похож на инвалида из древнего mscomctl.ocx?
Я ориентируюсь на классические (устоявшиеся) вещи.
mscomctl.ocx -это Microsoft Windows Common Controls 6.0 -действительно инвалидная надстройка для VB6, т.к. отсутствует поддержка современных стилей.
Правильная надстройка если уж на то пошло - COMCTL32.OCX -Microsoft Windows Common Controls 5.0
Но это лишь надстройка, точно также как .NET -более современная настройка, не более (если говорить о контролах).

Не листбокс, а ListView.
И называется это
List View (Windows) - MSDN - Microsoft
Обновленная статья от 7/25/2013, а не от 98г., заметь.
И входит в состав
Windows Controls (Windows) - MSDN - Microsoft
(Comctl32.dll)
И заметь, грида там нет. И если честно, грид мне просто не нравится.
И именно на них и основан GUI в Windows (включая Win 7, Win 8 и последующие версии, метро - отдельная тема) ,а современность определяется стилями, которые у каждой OS свои.

А вот современность "родных .Net контролов" очень относительна. Если крашенные Strip-меню выглядят современно на классике, то на 7-ках и 8-ках они выглядят хреново. И никакой поддержки на уровне OS нет. Захотят .Net девелоперы - нарисуют новый стиль, не захотят не нарисуют.

ListView в .NET это всего лишь обертка над API-шным.
Но пользовать такие обертки удобно. И я бы не стал лезть в .NET, если б не хотел воспользоваться этими удобствами.
А с другой стороны всегда можно подправить глюк в обертке, либо сделать то что в обертке не предусмотрели.
То что может обертка, всегда можно сделать через API, а то что через API не заложено, обертка сделать не может.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Listview (ReportView) Часть столбцов "скрыта" -чтоб нельзя было раздвинуть?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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