Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как организовать выделение столбцов, ListView 
:(
    Опции темы
ДобренькийПапаша
Дата 22.9.2009, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

Репутация: нет
Всего: 7



У меня есть одна строка в ListView. У неё 18 столбцов. Должна быть возможность выбора отдельного столбца, и соответственно подсвечиваться должен синим цветом выбранный. FullRowSelect поставил в false.

Код

            lvWeek.Items.Add("");
            const byte weeks = 18;
            for(byte i=0; i<weeks; i++)
            {
                lvWeek.Items[0].SubItems.Add("");
            }


После этого выбирается (подсвечивается синим) только первый столбец. Как сделать возможность выбора каждого столбца и его подсветки?

p.s. Когда создаю ListView, ставлю вид Details, gridline=true, то всегда отображается минимум две строки, как сделать чтобы была одна строка?


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
VeryWell
Дата 22.9.2009, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 15.3.2009

Репутация: нет
Всего: нет



Работай над измененнием цвета ячейки. 
Код

lvWeek.Items[i].UseItemStyleForSubItems = false;
lvWeek.Items[i].SubItems[8].BackColor = Color.Blue;

Определять ячейку можно через событие (вроде ItemCheck)
PM MAIL   Вверх
ДобренькийПапаша
Дата 23.9.2009, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

Репутация: нет
Всего: 7



Нет, так не получается.

Нашёл с помощью API

Но не хочу так(((

Просто чую, что можно без этого обойтись.


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
ДобренькийПапаша
Дата 23.9.2009, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

Репутация: нет
Всего: 7



Хех, всё, что я нашёл, это не то. Там выделяется вся строка. И причём событие клик по ListView срабатывает только если клик произошёл на первом элементе строки, то есть не на subitem'e...

Вот это всё по сути решало бы проблему:

Код

 private void HighlightRow(ListViewItem item)
    {
       Rectangle iRect = item.GetBounds(ItemBoundsPortion.Label);
       
       Graphics grph = Graphics.FromHwnd(this.Handle);

       Brush brLine = new SolidBrush(System.Drawing.SystemColors.Highlight);
       Brush brString = new SolidBrush(System.Drawing.SystemColors.ActiveCaptionText);
    
       grph.FillRectangle(brLine, iRect);
       grph.DrawString(item.Text, this.Font, brString, iRect);

       for(int i = 1; i < item.SubItems.Count; i++)
       {
          ListViewItem.ListViewSubItem subItem = item.SubItems[i];                //Если бы вот тут можно было получить конкретный индекс
                                                                                                                     //того сабайтема на котором кликнули! (как это сделать непонятно)

          Rectangle sRect = GetSubItemBounds(item.Index, i, ItemBoundsPortion.Label);
              
          grph.FillRectangle(brLine, sRect);

          grph.DrawString(subItem.Text, this.Font, brString, sRect);
       }

       brLine.Dispose();
       brString.Dispose();
       grph.Dispose();   
    }


Тут тупо подсвечиваются весь текст во всех сабайтемах, переписать на FillRectangle() не проблема. Проблема получить конкретный сабайтем, его индекс, или его границы.. Чтобы залить конкретно его...

Какие идеи?

p.s. И в конце концов, если никто не знает, то скажите, всё это можно реализовать через DataGrid? Мне тут надо выделять отдельно ячейку, возможность заносить туда текстовую инфу программно, и считывание того, что записали в ячейку...

Это сообщение отредактировал(а) ДобренькийПапаша - 23.9.2009, 14:43


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
VeryWell
Дата 23.9.2009, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 15.3.2009

Репутация: нет
Всего: нет



У DataGrid усть свойства SelectedRows, SelectedColomns и SelectedCells...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0781 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.