powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Использование ListBox в цикле
24 сообщений из 24, страница 1 из 1
Использование ListBox в цикле
    #39522204
Arbit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте уважаемые Гуру!
Нужен ваш совет

Есть цикл foreach , в котором перебираются строки DataView
В зависимости от логических условий анализа строки
выводится (или не выводится) ListBox , из которого пользователю
нужно выбрать значение, для дальнейшего использования в цикле

Подскажите пожалуйста как можно поставить цикл на "паузу", чтобы пользователь
мог сделать выбор и цикл продолжил свою работу

Заранее благодарен всем откликнувшимся.
...
Рейтинг: 0 / 0
Использование ListBox в цикле
    #39522229
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arbit,
На событие открытие формы, окна пробежать цикл и проставить в эти строки в колонку Решение текст с кнопкой "Выбрать".
Юзверь понажимает кнопки, а потом опять цикл.
И ставить на паузу не нужно.
Это как в магазине Корзина. Вы же не в паузе открываете корзину.
...
Рейтинг: 0 / 0
Использование ListBox в цикле
    #39522230
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arbitдля дальнейшего использования в цикле
Тут надо подробнее, т.к. обычно бизнес логика не зависит от сортировки.
...
Рейтинг: 0 / 0
Использование ListBox в цикле
    #39522257
Arbit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123, спасибо!
авторArbit
для дальнейшего использования в цикле

Тут надо подробнее, т.к. обычно бизнес логика не зависит от сортировки.
Подробнее

Пользователь добавляет запись в базу данных из формы
Одно из полей - RichtTextBox в котором формируется описание операции
из предложенных последовательно списков в ListBox
( выбор в каждом списке является критерием для select следующего списка ).
Списки на основе DataTable (через DataView.RowFilter .)
Здесь все нормально.

Но на основе выбора из последнего списка создается DataView , строки которого
перебираются в цикле.

В цикле анализируется каждая строка на предмет содержания определенных символов .
Если строка содержит необходимый символ, то нужно показать ListBox содержащий
DataView из другой таблицы для выбора значения, которое должно записаться в буфер (List<string>)

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

Не могу придумать как сделать паузу в цикле для :
1. отображения списка пользователю
2. дождаться его выбора и, на основе него, записать некоторое значение в буфер

Затем перейти к следующей строке в цикле.

В цикле строк от 1 до 15(максимум) ,и ListBox нужно будет показывать максимум раз 5 -6.
А может быть и ни разу

Как-то так

Заранее спасибо за готовность помочь
...
Рейтинг: 0 / 0
Использование ListBox в цикле
    #39522297
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странный алгоритм, конечно, но все же. Если предполагается интерактивный диалог с пользователем, ваш ListBox отображайте на отдельной форме. А форму в цикле показывайте через ShowModal и все
...
Рейтинг: 0 / 0
Использование ListBox в цикле
    #39522307
наутилус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arbit,

Семён, сделай форму, в которой будет ListBox и в цикле делай frm.ShowDialog()
пока диалог не закроется (пользователь выбрал и нажал кнопку "подтвердить") цикл дальше не пойдёт
...
Рейтинг: 0 / 0
Использование ListBox в цикле
    #39522311
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arbit,
Ниже верно написали.
Если не MVP, то про учитывая ООП пишите
Цикл
ПрочестьСтроку ();
IF GialogForm = OK
ОбработатьСтроку (Строка)
КонецЦикла.

Модальная форма это пауза при показе.
...
Рейтинг: 0 / 0
Использование ListBox в цикле
    #39522312
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arbit,
По MV* лучше отделять БЛ от ГУИ.
...
Рейтинг: 0 / 0
Использование ListBox в цикле
    #39522351
Arbit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,
Это и есть ГУИ у меня.
А вся БЛ у меня вообще в DLL на с++
С# у меня только как пользовательский интерфейс, правда ввод данных через именно
эту форму такой "авороченный". Но такова задумка. По-другому никак.
Прежде чем отправить в базу
нужно подготовить данные используя мини-парсинг.
...
Рейтинг: 0 / 0
Использование ListBox в цикле
    #39522352
Arbit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
наутилус, привет!

Все сделал, большое спасибо.
Правда я думал что можно обойтись без отдельной формы, но, видимо,
это единственный способ для интерактива в цикле.
...
Рейтинг: 0 / 0
Использование ListBox в цикле
    #39522353
Arbit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще раз всем большая благодарность!
Хорошего дня!
...
Рейтинг: 0 / 0
Использование ListBox в цикле
    #39522358
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArbitЭто и есть ГУИ у меня.
А вся БЛ у меня вообще в DLL на с++
я говорил про MV* на C# для этого должен быть класс под формой - презентер.
Т.е. это не по MV* вот и всё что я сказал.
ArbitПо-другому никак.
над DLL делается обёртка-класс
ArbitПравда я думал что можно обойтись без отдельной формы,
можно без неё, даже в одной процедуре т.к. нет потоков, но просто будет мешанина кода в одном классе-форме.
...
Рейтинг: 0 / 0
Использование ListBox в цикле
    #39522359
Arbit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
наутилус, у меня еще вопрос.
Этот RichtTextBox в форме это пока для отладки. Текст в нем форматированный по цвету.
И в базе он будет храниться в форматированном виде.
То есть со спец символами. И загружаться в грид будет форматированный
А в конечном варианте RichtTextBox должен быть одним из полей в DataGridView.

Ввод данных планируется делать в гриде.
Я смотрел в MSDN на примере DatePiker, но для меня это показалось сложновато
Можешь "на пальцах" объяснить как это прикрутить?
Или тыкнуть ссылкой на готовый пример, если где есть?
...
Рейтинг: 0 / 0
Использование ListBox в цикле
    #39522360
Arbit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123ArbitПравда я думал что можно обойтись без отдельной формы,
можно без неё, даже в одной процедуре т.к. нет потоков, но просто будет мешанина кода в одном классе-форме.
И то верно.
Одна дополнительная формочка в проекте погоды не сделает.
Короче- будет модальная форма. Спасибо!
...
Рейтинг: 0 / 0
Использование ListBox в цикле
    #39522375
наутилус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arbit,

вот пример. сам не пробовал:
https://www.codeproject.com/Articles/31823/RichTextBox-Cell-in-a-DataGridView

а это пример от майкрософта:
https://docs.microsoft.com/en-us/dotnet/framework/winforms/controls/how-to-host-controls-in-windows-forms-datagridview-cells

по аналогии можно сделать, не календарь, а ричтекстбокс
...
Рейтинг: 0 / 0
Использование ListBox в цикле
    #39522377
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArbitА в конечном варианте RichtTextBox должен быть одним из полей в DataGridView.
насколько понял, из коробки в шарпе грид не поддерживает данного.
Т.е. надо много писать руками в Cell.Paint
imho
...
Рейтинг: 0 / 0
Использование ListBox в цикле
    #39522379
наутилус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

из коробки нет, но и не так много руками писать. примеры выше )
...
Рейтинг: 0 / 0
Использование ListBox в цикле
    #39522380
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
наутилуса это пример от майкрософта:
https://docs.microsoft.com/en-us/dotnet/framework/winforms/controls/how-to-host-controls-in-windows-forms-datagridview-cells
ёшкин кот. 700 строк кода для типа колонки(.
Жалко в шарпе грид слабенький.
...
Рейтинг: 0 / 0
Использование ListBox в цикле
    #39522386
наутилус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

ну можно чужие компоненты поставить ) потом разбираться с их косяками и тормозами )
...
Рейтинг: 0 / 0
Использование ListBox в цикле
    #39522390
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
наутилус,
да. У нас Телерик.))
А грид в шарпе просили ещё лет 8 назад AFAIK)
А аффтару придётся поумерить хотелки для разноцветного циркового грида.
Удачи аффтару!
...
Рейтинг: 0 / 0
Использование ListBox в цикле
    #39522485
Arbit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,
Когда очень "хочется", это хуже чем "болит" :))
...
Рейтинг: 0 / 0
Использование ListBox в цикле
    #39522517
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Arbit Еще раз всем большая благодарность!
Хорошего дня!

Жаль, что Вы подумали, что блестяще решили задачу.
Перебор строк в гриде - уже дурная практика.
Какую задачу Вы решаете?
...
Рейтинг: 0 / 0
Использование ListBox в цикле
    #39522519
Arbit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
наутилусArbit,
вот пример. сам не пробовал:
https://www.codeproject.com/Articles/31823/RichTextBox-Cell-in-a-DataGridView

Рабочий пример. Спасибо!
Схему понял: три своих класса от базовых (Column, Cell и Control ).
Пошел копипастить :)
...
Рейтинг: 0 / 0
Использование ListBox в цикле
    #39522589
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Какую задачу Вы решаете?
Чем заняться в будущем :)
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Использование ListBox в цикле
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]