|
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 61
|
|
Передача данных между формами + поиск в ComboBox15.03.2021, 19:19. Показов 1496. Ответов 10
Здравствуйте. Интересует два вопроса( перерыл данный форум и сотни ссылок поисковиков, но не нашел рабочий для себя вариант).
1 вопрос: Передача данных между формами. На форме 1 имеется DataGridView, при двойном нажатии в ячейке - открывается вторая форма и в текстбокс второй формы помещается содержимое активной ячейки таблицы первой формы. При нажатии кнопки на второй форме, новое содержимое текстбокса этой же формы помещаем в активную ячейку первой формы (где был совершен даблклик). Вторую форму закрываем. 2 вопрос: поиск в combobox. Прочёл массу примеров. Но, ищет либо по первому символу, либо всё связано с БД. Мне же нужен поиск по коллекции combobox. Без привлечения кнопок,таблиц,листбоксов.
0
|
|
| 15.03.2021, 19:19 | |
|
Ответы с готовыми решениями:
10
Передача данных в БД между формами Передача данных между формами Передача данных между формами |
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
|||
| 15.03.2021, 20:16 | |||
|
Для того, чтобы из одной формы передать в другую какие-то данные, есть несколько способов 1) Через конструктор 2) Через подписку 3) Через класс-кэш (обычно статический), видимый всем формам 4) Через динамическое создание элементов в самой форме, объявленных как public Добавлено через 2 минуты Вам нужен автоматический выбор походящего итема в комбобоксе или Вам нужно автораскрытие списка итемов с установкой на подходящий ?Добавлено через 8 минут По первому вопросу явно напрашивается использование классов-моделей. Главная форма по кнопке на гриде создает экземпляр Модели, куда помещает все ячейки(поля) текущей записи грида, после чего либо создает Форму2, передавая в ее конструктор указатель на объект Модели, либо записывает его в класс-кэш. Вторая форма либо адресуется к Модели через свое собственное поле (куда и попадает ссылка на Модель в коде конструктора) либо к полю "кэша". Для обратной передачи данных (юзер ввел или исправил поля записи) из Формы2 новые данные кладутся в Модель, которая передается обратно либо через "ждущий" public-метод Главной формы, либо в кэш, откуда ее и забирает Главная форма.
0
|
|||
|
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 61
|
|
| 15.03.2021, 21:08 [ТС] | |
|
https://codernotes.ru/articles... rugoj.html
Первый вопрос был решен с помощью 3 способа из данной ссылки. Второй вопрос. Нужен поиск типа: имеются, допустим, элементы коллекции "123","456", "981". При вводе "1" мне предложит как "123",так и "981".
0
|
|
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
|
| 15.03.2021, 21:38 | |
|
lMyzhik, Способ 3 из ссылки - костыль из костылей, ибо лазать руками в автоматически создаваемый код - искать себе приключения.
Второй вопрос так и остался загадкой. Если просто перебором итемов комбобокса, то алгоритм сравнения задавайте сами какой нужно. И неясно, что делать когда найден - сделать его выбранным или как ?
0
|
|
|
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 61
|
|
| 15.03.2021, 21:57 [ТС] | |
|
Так лезть в автоматически создаваемый код и не надо. Всё доступно в свойствах компонента.
Второй вопрос не является загадкой. Допустим, поиск дал несколько результатов. Пользователь выбирает нужный ему и итем становится активным.
0
|
|
|
dive
4956 / 4649 / 844
Регистрация: 13.04.2015
Сообщений: 9,850
|
||
| 15.03.2021, 22:04 | ||
0
|
||
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
|||
| 18.03.2021, 04:00 | |||
Костыль при этом остается костылем, даже покрашенный в розовый цвет ![]() Добавлено через 8 минут
0
|
|||
|
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 61
|
||
| 18.03.2021, 14:52 [ТС] | ||
|
0
|
||
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
||
| 18.03.2021, 15:17 | ||
|
Например, UserControl с TextBox, CheckBox + 2 ListBox. Вверху контейнера TextBox для ввода образца и CheckBox для переключения режимов "поиск" и "фильтр" Внизу ListBox со списком для показа и ListBox скрытный с полным списком Изначально оба листа содержат один и тот же список. При изменении в TexBox выполняется одно из двух: 1. Режим "поиск" Ищется в ListBox, который видим, первый подходящий итем и делается текущим (выделяется цветом) 2. Режим "фильтр" Видимый ListBox очищается, невидимый просматривается и все совпадающие итемы копируются в видимый, Первый в списке становится текущим и выделенным. 3. Выбор по клику на ListBox как обычно. 4. При переключении чекбокса делать автоматический поиск (фильтрацию) по содержимому TextBox 5. При очистке TextBox юзером восстанавливать видимый ListBox вне зависимости от режима. Это UserControl можно многократно использовать в разных местах GUI, включая на разных формах.
0
|
||
|
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 61
|
||
| 18.03.2021, 15:27 [ТС] | ||
|
А Вы не подскажите, где-либо видели примеры подобных реализаций? О подобном читал, но не пробовал реализовать
0
|
||
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
||
| 18.03.2021, 15:51 | ||
|
Вариант 2
Тоже UserControl TextBox, кнопка-"пипочка" для выпадания списка, чекбокс для переключения режима (пусто - поиск, галка-фильтрация) ListBox, изначально невидимый, ListBox всегда невидимый с полным списком. По нажатию на "пипочку" или выполняется все то же, что в первом случае, но 1-й ListBox отображается непосредственно под TexBox (имитация Combobox). При изменении текста в TextBox или переключении режимов опять-таки как в 1-м варианте. При потере фокуса UserControl или клику на ListBox ListBox прячется. Да, чуть не забыл, в обоих вариантах по клику на ListBox выбранный итем переносится в TextBox. Добавлено через 1 минуту ![]() Добавлено через 19 минут Если боитесь UserControl`а (все новички обычно боятся этого чупакабрика), то сделайте то же самое на простой Panel 1) Положите на форму Panel, 2) На нее положите все необходимые контролы, в соответствии с выбранным вариантом. 3) Красиво их стилизуйте и отпозиционируйте. "Теневому" ListBox сразу выставьте visible=false Тут ремарочка для варианта 2. Чтобы ListBox1 не занимал лишнего места на форме, а был виден только при нажатой "пипочке", его родителем следует указать не панель, а форму. Тогда при показе он просто нарисуется поверх контента формы, как это делает ComboBox. 4) Напишите метод начального заполнения теневого ListBox и копирования его в ListBox1. Вызовите этот метод сразу после инициализации формы. 5) Назначьте слушателей (обработчиков) следующих событий (Вариант 1, для 2-го сами сообразите) - TextBox.TextChanged (A) - CheckBox.Click (B) - ListView.Click (C) 6) Напишите метод заполнения ListBox1 из ListBox теневого как указано выше (в соответствии с режимом) 7) В обработчиках событий A и B вызывайте метод заполнения - всего одна строчка кода ![]() 8) В обработчике C выбранный текст переносите в TexBox, не забыв отключить его обработчик A (иначе будет бесконечный цикл и программа зависнет), после чего опять включить. Если это сложно для Вас, можно воспользоваться тэгом TexBox, куда писать 1, если событие заблокировано, или 0 - если нет. Ну и в событии A проверять тэг ![]() Добавлено через 4 минуты Можно сделать чуть красивше ![]() Вместо CheckBox, назначение которого юзеру будет изначально неясно, можно положить инконку с "лупой" или "воронкой". При клике на иконке менять картинки на кнопке, а дальше все как описано выше.
0
|
||
| 18.03.2021, 15:51 | |
|
Помогаю со студенческими работами здесь
11
Передача данных между формами Передача данных между формами Передача данных между формами Передача данных между формами
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: при создании документов установить период списания автоматически. . .
|
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2.
Задача: вывести данные из ТЧ нетипового документа. . .
|
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению.
На форме документа создается. . .
|
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
|
|
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
|
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
|
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию.
2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
|
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
|