Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
 Аватар для denis_stell
1 / 1 / 0
Регистрация: 07.02.2010
Сообщений: 129

Корректно снять выделение с ячейки datagrid

25.03.2014, 22:34. Показов 3363. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
добрый вечер!столкнулся с проблемой, есть форма, на ней грид, в гриде при загрузке отрабатывает функция загрузки значений в datagridview.загружаю так:
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
public void show_f()
        {
            SqlDataAdapter da;
            SqlConnection con = new SqlConnection(conn.sConSql);
            SqlCommand cmd;
            DataView dv;
            DataTable dt;
 
            cmd = con.CreateCommand();
            cmd.CommandText = "select * from t where id_z=" + ID;
            dt = new DataTable();
            da = new SqlDataAdapter(cmd);
            try
            {
                con.Open();
 
                da.Fill(dt);
                con.Close();
                dv = new DataView(dt);
                dv.AllowDelete = false;
                dv.AllowEdit = true;
                dv.AllowNew = false;
                Grid1.DataSource = dv;
                Grid1.Columns["id"].Visible = false;
                Grid1.Columns["id_k"].Visible = false;
     }
так как при загрузке, я анализирую значения из базы и в соответствии с этим,выделяю цветом строки,то стала не удобно восприниматься картинка грида, т.е. при загрузке данных в грид, выделяется первая строка, при установленном режиме fullrowselect.
в лоаде попробовал написать
grid1.rows[0].selected=false или grid1.clearselected(); результата нет, попробовал в обработчиках
CellPainting или RowPostPaint
выделение снимается, строка в последствии не выделяется, если сделать на событии cell_click
C#
1
grid1.rows[0].selected=true;
строка не выделяется. как быть?


предложения типа:
сними fullrowselect или зачем тебе выделять строку, не выделяй итп - не нужны
т.е. если в кратце, нужно чтобы при загрузке формы никакие строки не были выделены, затем пользователь может сам какую нужно ему сроку выделить и провести манипуляцию
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.03.2014, 22:34
Ответы с готовыми решениями:

Снять выделение текста выбранной ячейки DataGridView
Доброго времени суток. Чтобы редактировать значение ячеек по однократному щелчку по ним изменил EditMode грида на EditOnEnter и теперь...

Снять выделение строки в DataGridView
У меня в проекте на форме лежит элемент DataGridView при загрузке приложения DataGridView заполняется данными, как сделать чтобы исчезло...

Снять выделение с элемента ListView при потере фокуса
Доброго времени суток! На форме есть элемент listView. Допустим, я выбираю в нем некий элемент, а затем кликаю на любое другое место на...

4
 Аватар для Spawn
995 / 893 / 354
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
26.03.2014, 07:37
Цитата Сообщение от denis_stell Посмотреть сообщение
CellPainting или RowPostPaint
выделение снимается, строка в последствии не выделяется, если сделать на событии cell_click
Логично, так как события CellPainting и RowPostPainting отрабатывают уже после клика.
Приведите полный пример загрузки (в части работы с DataGridView), так как и метод ClearSelection() и свойство Selected на строке замечательно делают своё дело, так что пока всё сводится к тому, что Вы где-то нахимичили в коде.
0
 Аватар для denis_stell
1 / 1 / 0
Регистрация: 07.02.2010
Сообщений: 129
26.03.2014, 09:20  [ТС]
Да,в принципе и приводить то и нечего, кроме того что описал...
на лоад основной формы повесил
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
30
31
32
33
34
35
36
37
38
public void show_f()
        {
            SqlDataAdapter da;
            SqlConnection con = new SqlConnection(conn.sConSql);
            SqlCommand cmd;
            DataView dv;
            DataTable dt;
 
            cmd = con.CreateCommand();
            cmd.CommandText = "select * from t where id_z=" + ID;
            dt = new DataTable();
            da = new SqlDataAdapter(cmd);
            try
            {
                con.Open();
 
                da.Fill(dt);
                con.Close();
                dv = new DataView(dt);
                dv.AllowDelete = false;
                dv.AllowEdit = true;
                dv.AllowNew = false;
                Grid1.DataSource = dv;
                Grid1.Columns["id"].Visible = false;
                Grid1.Columns["id_k"].Visible = false;
     }
     catch (Exception ex)
     {
        MessageBox(ex.Message);
     }
 
 
private void zak_Load(object sender,EventArgs e)
{
   show_f();
   Grid1.ClearSelection(); // пробовал здесь, не помогает
   Grid1.Rows[0].selected=false // тоже не помогает
}

точно где-то туплю, но не могу понять пока где, может в свойствах что-то нужно поменять, или в обработчик что-нить повесить
0
 Аватар для Spawn
995 / 893 / 354
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
26.03.2014, 09:32
Событий на Grid1 никаких случайно не осталось?

Гляну, конечно, как с привязкой оно себя ведёт, но разницы что с привязкой, что без вроде нет...
0
 Аватар для denis_stell
1 / 1 / 0
Регистрация: 07.02.2010
Сообщений: 129
26.03.2014, 17:20  [ТС]
События были, но я их закоментил, результат тот же.
может влияет следующий фактор, хотя врятли:
данная форма, в которой распложен грид, это редактируемая форма некоторого объекта, который открывается двойным щелчком,т.е. есть список обектов, нарисовано событие double_click, при двойном щелчке, открывается форма редактирования, где и расположен наш интересующий грид, с фнкцией отображения show_f();

или всему виной fullrowselect ?

Добавлено через 11 минут
проверил на всякий случай, считает ли он вообще выделенную строку, выделенной?
в лоад формы дописал
C#
1
2
3
4
if (Grid1.SelectedRows.Count >= 1)
{
   MessageBox.Show("Есть");
}
Сообщение выводится,но не снимает выделение

Добавлено через 7 часов 20 минут
Ребят, ни у кого разве нет идей?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.03.2014, 17:20
Помогаю со студенческими работами здесь

Выделение строки dataGrid по клику мышки
Надо сделать выделение строки грида по клику мышки. Получаю индекс сроки: DataGrid.HitTestInfo hitTestInfo = dataGrid1.HitTest(e.X,...

Многострочные ячейки в DataGrid.
Как поместить в ячейку DataGrid свой контрол, например, RichTextBox.

DataGrid как сделать выделение всей строки
Есть заполненный данными DataGrid свойство ReadOnly = true если кликнуть на ячейке то происходит переход в режим 'редактирования' ячейки,...

Начало редактирования ячейки в DataGrid
Не могу никак найти событие 'начало редактирования ячейки', понимаю что я не там ищу, но со сменой идеологии еще не понял где надо Спасибо

Прочитать выделенный фрагмент текста из ячейки Datagrid
Собственно, вопрос в заголовке. В ячейке датагрида содержится текст "Привет мартышке!". Пользователь выделяет фрагмент...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru