Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/30: Рейтинг темы: голосов - 30, средняя оценка - 4.57
4 / 4 / 0
Регистрация: 30.05.2013
Сообщений: 61

Запретить изменение размера столбца ListView

06.05.2014, 01:33. Показов 6232. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте Как запретить изменение размера столбца ListView?
Headerstyle Nonclickable не помогает, оно лишь запрещает на них нажимать, при этом изменение размера все еще возможно.
Спасибо
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.05.2014, 01:33
Ответы с готовыми решениями:

Изменение размера столбца в datagrid
Собственно вопрос в названии темы. Как можно изменить размер столбцов в элементе datagrid1 (не view)? Visual Studio 2015. Не WPF. ...

Изменение ширины столбца ListView без перерисовки
Здравствуйте, Имеется стандартный ListView в режиме Detail. В нем X столбцов. Хочу запилить для него свойство автоподборки ширины...

Ширина столбца в ListView по содержимому столбца
Уважаемые форумчане. Как реализовать в программе, чтобы столбцы в ListView имели ширину по содержимому колонки?

5
1168 / 886 / 517
Регистрация: 09.04.2014
Сообщений: 2,102
06.05.2014, 12:18
в обработчике события ListView.ColumnWidthChanging присвоить e.Cancel=true;
1
4 / 4 / 0
Регистрация: 30.05.2013
Сообщений: 61
06.05.2014, 13:31  [ТС]
Цитата Сообщение от nedel Посмотреть сообщение
в обработчике события ListView.ColumnWidthChanging присвоить e.Cancel=true;
Не помогает. Анимация изменения пропала, но если отпустить мышь, то ширина все равно изменяется.
У события ColumnWidthChanged нету e.Cancel
0
1168 / 886 / 517
Регистрация: 09.04.2014
Сообщений: 2,102
06.05.2014, 17:50
тогда так:
C#
1
2
3
4
5
 private void listView1_ColumnWidthChanging(object sender, ColumnWidthChangingEventArgs e)
        {
            e.Cancel = true;
            e.NewWidth = listView1.Columns[e.ColumnIndex].Width;
        }
проверил
2
2 / 2 / 1
Регистрация: 16.03.2015
Сообщений: 45
23.03.2015, 14:08
Гм, у кого-нибудь еще этот код работает? По прежнему, столбцы сдвигаются без проблем...
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
15.06.2017, 10:43
Лучший ответ Сообщение было отмечено SatanaXIII как решение

Решение

Придумалось вот такое решение:
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
bool    SacredColumnFlag    = true;
int     SacredColumnWidth   = 0;
int     NumSacredColumn     = 1;
Point   SavedCursorPositionColumnClick = new Point();
 
private void listView1_ColumnWidthChanging(object sender, ColumnWidthChangingEventArgs e)
{
    if (e.ColumnIndex == NumSacredColumn)
    {
        if (e.ColumnIndex > 0)
        {
            if (SacredColumnFlag)                                               //// Пока держим левую кнопку мыши нажатой
            {                                                                     // 
                SacredColumnFlag = false;                                         // 
                SacredColumnWidth = listView1.Columns[e.ColumnIndex - 1].Width;   // Запомнили ширину столбца в момент нажатия (перед изменением)
                SavedCursorPositionColumnClick = Cursor.Position;                 // Запомнили положения курсора в момент нажатия
            }                                                                   //// 
            listView1.Columns[e.ColumnIndex - 1].Width = SacredColumnWidth + Cursor.Position.X - SavedCursorPositionColumnClick.X; // Изменили ширину столбца на разницу между запомненной и текущей позицией курсора
        }                                                                                                                          // [e.ColumnIndex - 1] - индекс столбца, находящегося слева от изменяемого
                
        e.NewWidth = 0;
        e.Cancel = true;
    }
}
 
private void listView1_ColumnWidthChanged(object sender, ColumnWidthChangedEventArgs e)
{
    SacredColumnFlag = true; // Отпустили кнопку
}
Не самое элегантное, но работает.

Добавлено чуть попозже
Чтобы пользователь ни о чем не догадался надо еще только подсвечивать шапку предыдущего столбца и менять курсор.

Добавлено через 9 минут
Впринципе можно еще, как вариант, перехватывать событие нажатия мыши на границе столбцов заголовков и смещать до ближайшего левого столбца (на пять-десять пикселей). Но стандартными событиями компонента такое не реализовывается.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.06.2017, 10:43
Помогаю со студенческими работами здесь

Listview - как запретить переход к другому item'у
Всем привет! Ситуация следущая: есть форма, в listview несколько item'ов, к каждому его item'у привязаны некоторые данные. Как сделать так,...

Как запретить редактирование значения столбца datagridview?
dataGridView1.Cells.ReadOnly = false; этот код не работает

Не перерисовывается ListView при изменении размера в SplitContainer
Здравствуйте, пишу чат, пользователи у меня отображаются в списке ListView, который в свою очередь находится в SplitContainer. Всё хорошо...

Сумма столбца в listView
Собственно вот проблемам имею listLiew1 разделенный на 2 колонки нужно просуммировать значения второй колонки перебрал весь код который...

Как запретить изменение текста в TextBox
После того как я что то записал в TextBox надо запретить изменение текста. Добавлено через 25 минут Разобрался,свойство Enabled ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru