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

DataGridView и TabControl

08.07.2022, 09:54. Показов 1714. Ответов 20

Студворк — интернет-сервис помощи студентам
Есть у меня две таблицы подключенные к DataGridView, каждая таблица находится на отдельной вкладке TabControl, такой вопрос, как бы я мог сделать так, чтобы кнопка удаления или изменения работала сразу на 2 таблицы чтобы заново не прописывать новую кнопку, или так не получится сделать ?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.07.2022, 09:54
Ответы с готовыми решениями:

DataGridView в TabControl
Основываясь на этом коде хотел заполнить свою datagridview но: 1) когда datagrid просто на форме он работает 2)когда у меня есть ещё...

Добавление DataGridView в TabControl
На каждом шаге цикла создаётся DataGridView dgv, содержащий результаты вычислений. Я хочу внести каждый dgv в TabControl. Но в результате в...

Создание DataGridView в tabControl
Доброго времени суток, как программно создать таблицы DataGridView во всех новых вкладках tabControl? Вот пример моего кода, но таблицы...

20
2287 / 1603 / 400
Регистрация: 26.06.2017
Сообщений: 4,748
Записей в блоге: 1
08.07.2022, 09:59
Цитата Сообщение от Chinchimaru Посмотреть сообщение
чтобы кнопка удаления или изменения работала сразу на 2 таблицы
В обработчике клика обрабатывайте обе таблицы или передавайте в обработчик клика ссылку на текущую таблицу ту, которую должна обработать кнопка.
0
0 / 0 / 0
Регистрация: 06.06.2022
Сообщений: 39
08.07.2022, 10:01  [ТС]
Uswer, Не совсем понял, что это значит)
0
2287 / 1603 / 400
Регистрация: 26.06.2017
Сообщений: 4,748
Записей в блоге: 1
08.07.2022, 10:17
Цитата Сообщение от Chinchimaru Посмотреть сообщение
Не совсем понял
Что-то такое:
C#
1
2
3
4
5
6
private void button2_Click(object sender, EventArgs e) // это обработчик клика (операция Delete)
{
    if (currentDataGridView.CurrentRow.IsNewRow) return; // здесь и далее currentDataGridView это текущая обрабатываемая сетка
    int i = currentDataGridView.CurrentRow.Index; 
    currentTable.Rows.RemoveAt(i); // currentTable - это таблица связанная с currentDataGridView 
}
0
0 / 0 / 0
Регистрация: 06.06.2022
Сообщений: 39
08.07.2022, 11:53  [ТС]
Uswer, Спасибо, сейчас попробую !

Добавлено через 1 час 15 минут
Uswer, Ничего не получилось(((
вот код самой кнопки
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
        private void btnDelete_Click(object sender, EventArgs e)
        {
            try
            {
                MySqlCommand command = new MySqlCommand("delete from opp_db.long_term_contracts where id = @id ", db.getConnection());
                db.openConnection();
                command.CommandType = CommandType.Text;
                command.Parameters.AddWithValue("@id", txtID.Text);
                command.ExecuteNonQuery();
                db.closeConnection();
                update_all();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
названия этих таблиц:
long_term_contracts
short_term_contracts
0
2287 / 1603 / 400
Регистрация: 26.06.2017
Сообщений: 4,748
Записей в блоге: 1
08.07.2022, 13:46
Лучший ответ Сообщение было отмечено Chinchimaru как решение

Решение

Цитата Сообщение от Chinchimaru Посмотреть сообщение
Ничего не получилось
Оно и понятно. А так?
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
        private void btnDelete_Click(object sender, EventArgs e)
        {
            try
            {
                String tableName = "";
                if (TabControl1.SelectedIndex == 0)
                {
                    tableName = "long_term_contracts";
                }
                else if (TabControl1.SelectedIndex == 1)
                {
                    tableName = "short_term_contracts";
                }
 
                MySqlCommand command = new MySqlCommand($"delete from from opp_db.{tableName} where id = @id ", db.getConnection());
                db.openConnection();
                command.CommandType = CommandType.Text;
                command.Parameters.AddWithValue("@id", txtID.Text);
                command.ExecuteNonQuery();
                db.closeConnection();
                update_all();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
1
0 / 0 / 0
Регистрация: 06.06.2022
Сообщений: 39
08.07.2022, 15:14  [ТС]
Uswer, Вылезла вот такая тема(
Миниатюры
DataGridView и TabControl  
0
2287 / 1603 / 400
Регистрация: 26.06.2017
Сообщений: 4,748
Записей в блоге: 1
08.07.2022, 15:32
Ковырять надо в сторону txtID.Text, ведь ID берётся оттуда. И ещё, я надеюсь этот блок:
C#
1
2
3
4
5
6
7
8
if (TabControl1.SelectedIndex == 0)
                {
                    tableName = "long_term_contracts";
                }
                else if (TabControl1.SelectedIndex == 1)
                {
                    tableName = "short_term_contracts";
                }
Вы скорректировали под себя.
0
0 / 0 / 0
Регистрация: 06.06.2022
Сообщений: 39
08.07.2022, 16:42  [ТС]
Uswer, конечно сккоректировал, ещё часок помаюсь и отпишу по поводу результата !)

Добавлено через 1 минуту
Uswer, ну как сккоректировал, поменял название таб контрола да и все))))
0
2287 / 1603 / 400
Регистрация: 26.06.2017
Сообщений: 4,748
Записей в блоге: 1
08.07.2022, 20:43
Цитата Сообщение от Chinchimaru Посмотреть сообщение
поменял название таб контрола да и все
А индексы вкладок соответствуют именам таблиц?
0
0 / 0 / 0
Регистрация: 06.06.2022
Сообщений: 39
09.07.2022, 01:01  [ТС]
Uswer, Все получилось, проблема была настолько абсурдной, что аж стыдно))
просто стояло 2 from), спасибо за помощь, но остался один вопрос, при удалении записи из таблицы осуществляется переходит к первой записи, я смог решить эту проблему с кнопкой изменения
C#
1
2
3
int positionRow = table_long.CurrentCell.RowIndex;
int positionColumn = table_long.CurrentCell.ColumnIndex;
table_long.CurrentCell = table_long[positionColumn, positionRow];
но не знаю как это сделать с удалением, если еще поможете с этим - цены вам не будет !
Миниатюры
DataGridView и TabControl  
0
2287 / 1603 / 400
Регистрация: 26.06.2017
Сообщений: 4,748
Записей в блоге: 1
09.07.2022, 08:32
Цитата Сообщение от Chinchimaru Посмотреть сообщение
при удалении записи из таблицы осуществляется переходит к первой записи
Покажите код update_all();
0
0 / 0 / 0
Регистрация: 06.06.2022
Сообщений: 39
09.07.2022, 10:24  [ТС]
Uswer,
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
        private void update_all()
        {
            (DataGridView table, string name_table, DataTable sqlDt)[] upload_table = {
            (table_long, "long_term_contracts", sqlDt),
            (table_short, "short_term_contracts", sqlDt2)};
            foreach (var item in upload_table)
                upLoadData(item.table, item.name_table, item.sqlDt);
        }
 
        private void upLoadData(DataGridView table, string name_table, DataTable sqlDt)
        {
            MySqlCommand command = new MySqlCommand("SELECT * FROM " + name_table + " ;", db.getConnection());
            db.openConnection();
            sqlRd = command.ExecuteReader();
            sqlDt.Clear();
            sqlDt.Load(sqlRd);
            sqlRd.Close();
            db.closeConnection();
            table.DataSource = sqlDt;
 
 
        }
0
0 / 0 / 0
Регистрация: 06.06.2022
Сообщений: 39
10.07.2022, 08:26  [ТС]
Uswer, Я понял как можно реализовать эту вещь, надо чтобы после удаления выделялась строка идущая за той, которая была удалена, правда не понимаю как это написать)
0
2287 / 1603 / 400
Регистрация: 26.06.2017
Сообщений: 4,748
Записей в блоге: 1
10.07.2022, 18:07
В принципе можно запомнить i=table.CurrentRow.Index перед строкой 19, а в строке 20 установить table.SetSelectedRowCore(i, true), но нужны проверки разные.
0
0 / 0 / 0
Регистрация: 06.06.2022
Сообщений: 39
10.07.2022, 18:50  [ТС]
Uswer, а нельзя ли это прописать в кнопке ?
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
        private void btnDelete_Click(object sender, EventArgs e)
        {
            try
            {
                String tableName = "";
                if (tabControl1.SelectedIndex == 0)
                {
                    tableName = "long_term_contracts";
                }
                else if (tabControl1.SelectedIndex == 1)
                {
                    tableName = "short_term_contracts";
                }
 
                MySqlCommand command = new MySqlCommand($"delete from opp_db.{tableName} where id = @id ", db.getConnection());
                db.openConnection();
                command.CommandType = CommandType.Text;
                command.Parameters.AddWithValue("@id", txtID.Text);
                command.ExecuteNonQuery();
                db.closeConnection();
                update_all();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
0
2287 / 1603 / 400
Регистрация: 26.06.2017
Сообщений: 4,748
Записей в блоге: 1
10.07.2022, 19:11
Цитата Сообщение от Chinchimaru Посмотреть сообщение
а нельзя ли это прописать в кнопке ?
Можно где хочешь, но логичнее в месте изменения привязываемых данных.
0
0 / 0 / 0
Регистрация: 06.06.2022
Сообщений: 39
10.07.2022, 19:18  [ТС]
Uswer, что-то кричит на меня.
Миниатюры
DataGridView и TabControl  
0
2287 / 1603 / 400
Регистрация: 26.06.2017
Сообщений: 4,748
Записей в блоге: 1
10.07.2022, 19:51
Chinchimaru, всё же сделайте это в методе update_all();
0
0 / 0 / 0
Регистрация: 06.06.2022
Сообщений: 39
11.07.2022, 09:23  [ТС]
Uswer, таже ошибка
Миниатюры
DataGridView и TabControl  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.07.2022, 09:23
Помогаю со студенческими работами здесь

TabControl tabPage и datagridview в нём
Есть таб контрол, на второй странеице которого помещена таблица datagridview. Как обратиться к таблице?

Оптимизация заполнения нескольких DataGridView в Tabcontrol
Подскажите пожалуйста, как быть Есть TAbcontrol и datagriedview. Datagriedview в разных tabcontrol очень много, около 10. Если они...

Как отобразить DataGridView на всех вкладках TabControl
У меня есть обычный TabControl на форме. На одной из вкладок есть DataGridView, как можно его переносить на каждую вкладку чтобы не делать...

tabControl и невидимые поля в dataGridView - что-то не так
Доброго времени суток! Visual strudio 2012. На форме есть tabControl, на первой вкладке dataGridView и на второй вкладке тоже,...

TabControl+DataGridView
Добрый вечер! Проблема заключается в том,что если добавить колонку в dataGridView2, который находится на неоткрытой второй вкладке...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru