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

Выделение нужных ячеек в DataGridView

25.11.2011, 21:43. Показов 3096. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Исправьте пожалуйста этот код...В общем загружаю в DataGridView таблицу из чисел с текстового файла...выделяю одну ячейку мышкой ...и у меня все совпадения с этой ячейкой подкрашиваются в других ячейках...здесь всё работает хорошо...
А мне нужно чтоб я выделяю например 3 ячейки или 4, по вертикали или по горизонтали...в общем несколько произвольно...и что находится в выделенном подсвечивалось в остальных...

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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
 
 
namespace win001
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        const int colCount = 7;
 
        private void Form1_Load(object sender, EventArgs e)
        {
 
            dataGridView1.Columns.Add("col_1", "№");
            dataGridView1.Columns.Add("col_2", "дата");
            dataGridView1.Columns.Add("col_3", "A1");
            dataGridView1.Columns.Add("col_4", "A2");
            dataGridView1.Columns.Add("col_5", "A3");
            dataGridView1.Columns.Add("col_6", "A4");
            dataGridView1.Columns.Add("col_7", "A5");
            for (int l = 0; l < colCount; l++)
            {
                dataGridView1.Columns[l].ReadOnly = true;
                dataGridView1.Columns[l].Resizable = DataGridViewTriState.False;
            }
            dataGridView1.Columns[0].Width = 30;
            dataGridView1.Columns[1].Width = 80;
            dataGridView1.Columns[2].Width = 30;
            dataGridView1.Columns[3].Width = 30;
            dataGridView1.Columns[4].Width = 30;
            dataGridView1.Columns[5].Width = 30;
            dataGridView1.Columns[6].Width = 30;
            FileStream fStream = File.OpenRead("fileName.txt");
            StreamReader sReader = new StreamReader(fStream);
            while (!sReader.EndOfStream)
            {
                string tmpString = sReader.ReadLine();
                string[] strA = new string[colCount];
                string tmpN = null;
                int k = 0;
                for (int i = 0; i < tmpString.Length; i++)
                {
                    if (i < tmpString.Length - 1 && tmpString[i] != ' ')
                    {
                        tmpN += tmpString[i];
                    }
                    else
                    {
                        if (colCount == k + 1)
                        {
                            tmpN += tmpString[i];
                        }
                        strA[k] = tmpN;
                        tmpN = null;
                        k++;
                    }
                }
                dataGridView1.Rows.Add(strA);
            }
            sReader.Close();
            sReader.Dispose();
            fStream.Close();
            fStream.Dispose();
 
        }
        private void dataGridView1_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            if (e.Button == System.Windows.Forms.MouseButtons.Left)
            {
                foreach (DataGridViewRow dgvr in dataGridView1.Rows)
                {
                    if (dgvr.Index == dataGridView1.Rows.Count - 1)
                    {
                        break;
                    }
 
                    DataGridViewRow dgvrMain = dataGridView1.Rows[e.RowIndex];
                    foreach (DataGridViewCell cell in dgvr.Cells)
                    {
                        try
                        {
                            if (cell.Value.ToString() == dgvrMain.Cells[e.ColumnIndex].Value.ToString())
                            {
                                cell.Style.BackColor = Color.YellowGreen;
                            }
                            else
                            {
                                cell.Style.BackColor = Color.White;
                            }
                        }
                        catch (NullReferenceException)
                        {
                            break;
                        }
 
                    }
                }
            }
        }
    }
}
Добавлено через 9 часов 31 минуту
Неужели ни кто не знает ? Да пока сам не разберешься не кто не поможет...

как вот это приспособить и куда ..правильно воткнуть?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
у датагрдвью есть свойство SelectedCells которое вернет выделеннвые ячейки
в результате будет что-то вроде
foreach (var c in myGrid.SelectedCells ) {
 
if (c.Value.ToString()== cell.Value.ToString() )
{
тут делаем чего хотим
 
break;
}
 
 
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.11.2011, 21:43
Ответы с готовыми решениями:

Выделение ячеек dataGridview
Доброго времени суток, форумчане. Проблема у меня такая: есть датаГрид в котором очень много строк, каждая строка выделяется каким-то...

DataGridView выделение ячеек
Доброе утро, в общем у меня имеется СУБД для управление Базой данных вокзала.И когда запускаешь программу выделений на компоненте...

DataGridView - выборочное выделение ячеек цветом
Помогите, пожалуйста!! Есть у меня в dataGridView есть несколько столбцов с названием &quot;Тема&quot; + еще какое-то неизвестное число и...

4
102 / 102 / 13
Регистрация: 22.10.2011
Сообщений: 328
26.11.2011, 07:36
1. Тебе надо написать функцию, которая искала "собратиев" какой нибудь ОДНОЙ цифры
1.1 выделение можно сделать сменой цвета
2. Сделать событие с циклом внутри, которое бы вызывало функцию (выше)
0
1 / 1 / 0
Регистрация: 08.08.2011
Сообщений: 29
26.11.2011, 09:40  [ТС]
мне понятно,что ни чего не понятно
может быть без функции как нибудь, всё ведь работает на одну ячейку,можно подставить условие будет и на две,три ,четыре.... может как нибудь вот это удастся встоить или заменить код на связанное с этим

C#
1
2
3
4
5
6
7
8
foreach (var c in myGrid.SelectedCells ) {
 
if (c.Value.ToString()== cell.Value.ToString() )
{
тут делаем чего хотим
 
break;
}
0
102 / 102 / 13
Регистрация: 22.10.2011
Сообщений: 328
26.11.2011, 09:58
придумал.
у тебя сравнивается одна ячейка
C#
1
if (cell.Value.ToString() == dgvrMain.Cells[e.ColumnIndex].Value.ToString())
в то время как выделено несколько

1. надо повешать событие на поднятие кнопки мыши
2. потом весь твой код, только вместо строки где идет сравнение только с одной ячейкой, сделать что бы сравнение шло через цикл, с каждой из выделенных
1
1 / 1 / 0
Регистрация: 08.08.2011
Сообщений: 29
26.11.2011, 10:37  [ТС]
попробую,так как у меня ещё большие заморочки,буду долго пробовать,может поможешь,так сказать учебный материал будет?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.11.2011, 10:37
Помогаю со студенческими работами здесь

Выделение цветом ячеек dataGridView по значению
Всем привет!!! Подскажите пожалуйста, как первые столбца строки dataGridView перекрасить в определенный цвет. В зависимости от надписи в...

DataGridView выделение нескольких ячеек и нахождение их суммы!
Доброго времени суток! Подскажите пожалуйста как мне сделать так, чтобы при выделении нескольких строк в DataGridView1 и нажатии на button1...

Выделение нужных точек из массива
Здравствуйте! Я делаю программу по распознаванию номеров авто, она умеет находить номер, выделять его, и далее я перехожу к сегментации...

Выделение определенной области ячеек в DataGridView
Всем Добрый День или Вечер. По пробую правильно описать что интересует может кто сталкивался. есть DataGridView в ней 10 колонок и 10...

Запретить выделение ячеек в первом столбце datagridview
В datagridview 2 столбца. в свойстве SelectionMode = DataGridViewSelectionMode.CellSelect как запретить выделения ячеек в первом...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
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 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru