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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> В DataGridView выделить всю текущюю строку и щелчо 
:(
    Опции темы
NilovSerge
Дата 6.11.2007, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Всем привет!

1)Я нашел в MSDN как в DataGridView выделять всю текущюю строку:
    private void dataGridView_RowEnter(object sender, DataGridViewCellEventArgs e)
    {
      for (int i = 0; i < ((DataGridView)sender).Rows[e.RowIndex].Cells.Count; i++)
      {
        ((DataGridView)sender)[i, e.RowIndex].Style.BackColor = Color.Color.LightGray;
      }
    }

    private void dataGridView_RowLeave(object sender, DataGridViewCellEventArgs e)
    {
      for (int i = 0; i < ((DataGridView)sender).Rows[e.RowIndex].Cells.Count; i++)
      {
        ((DataGridView)sender)[i, e.RowIndex].Style.BackColor = Color.Empty;
      }
    }

Работатет нормально, за исключением того, что при открытии формы фон всех строк окрашен, как будто RowEnter отработал для каждой строки,
,а RowLeave - нет. Если подвигать курсором по гриде, то текущая строка выделяется нормально. 
 Можно ли это побороть? 


2) К DataGridView привязано контексное меню. Если щелкнуть правой мышкой на гриде, то текущая строка не переходит на
строку щелчка. Можно ли это побороть?


      Заранее спасибо
PM MAIL   Вверх
CYBERDREAM
  Дата 8.11.2007, 09:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I think, there4 I am
***


Профиль
Группа: Завсегдатай
Сообщений: 1096
Регистрация: 31.10.2006
Где: CyberLand

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



Приветствую. если тебе нужно, чтобы при щелчке на ячейку выделялась вся строка: то выстави: SelectionMode в FullRowSelect; или я тебя не верно понял smile 


--------------------
Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно)
Telegram, skype: kuchuk.artiom
PM MAIL WWW   Вверх
NilovSerge
Дата 8.11.2007, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Да пункт 1) так проще  smile 
Хотя есть и минус что не выделяется текущая ячейка(наверно на то он и FullRowSelect)
Это не очень удобно потому что если несколько колонок то и надо редактировать одну из них то не видно какая 
текущая нажимая клавиши "Влево/Вправо" Или это можно побороть?


 А нет ли идей насчет клике правой мышкой на гриде в 2) ?
PM MAIL   Вверх
1stain
Дата 8.11.2007, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 30.7.2007
Где: Киев - Харьков

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



Код

        private void dataGridView1_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
        {
            DataGridView _gridView = sender as DataGridView;
            _gridView.CurrentCell = _gridView[e.ColumnIndex, e.RowIndex];
            // следующая строка нужна, если ты хочешь по клику перейти в режим редактирования ячейки
            _gridView.BeginEdit(true);
        }


з.ы. кстати, что-то мне подсказывает, что и в первом пункте тебе надо было это же (ессно вместе с 
Цитата(CYBERDREAM @  8.11.2007,  09:47 Найти цитируемый пост)
то выстави: SelectionMode в FullRowSelect


Это сообщение отредактировал(а) 1stain - 8.11.2007, 16:18


--------------------
Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein)
user posted image
PM MAIL   Вверх
NilovSerge
Дата 8.11.2007, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

            DataGridView _gridView = sender as DataGridView;
            _gridView.CurrentCell = _gridView[e.ColumnIndex, e.RowIndex];

Помогло для правой мышки smile  Но при этом если я кликаю левой мышкой то ячейка сразу переходит в режим редактирования
и без вызова _gridView.BeginEdit(true);  smile  Могу ли я проверить какая кнопка мышки нажата ?


Связи с первым пунктом не уловил - все работает также
Мне помогло на загрузке формы сделать:
Код

    private void Form_Load(object sender, EventArgs e)
    {
      int i = 0;
      foreach (DataGridViewRow Row in SettlementAccountsGridView.Rows)
      {
        SettlementAccountsGridView.CurrentCell = SettlementAccountsGridView[1, i];
        i++;
      }
      SettlementAccountsGridView.CurrentCell = SettlementAccountsGridView[1, 0];
    }

И выделенная сначала токо 1 строка и выделяется текущая ячейка То что мне и надо  smile 
PM MAIL   Вверх
1stain
Дата 8.11.2007, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 30.7.2007
Где: Киев - Харьков

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



Цитата(NilovSerge @  8.11.2007,  19:05 Найти цитируемый пост)
Могу ли я проверить какая кнопка мышки нажата ?

можешь  smile 


--------------------
Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein)
user posted image
PM MAIL   Вверх
CYBERDREAM
Дата 9.11.2007, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I think, there4 I am
***


Профиль
Группа: Завсегдатай
Сообщений: 1096
Регистрация: 31.10.2006
Где: CyberLand

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



Код

            if(e.Button=MouseButtons.<>)
                ....



--------------------
Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно)
Telegram, skype: kuchuk.artiom
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

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


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

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


 




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


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

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