Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
 Использование ListBox в цикле  [new]
Arbit
Member

Откуда:
Сообщений: 190
Здравствуйте уважаемые Гуру!
Нужен ваш совет

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

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

Заранее благодарен всем откликнувшимся.
16 сен 17, 15:16    [20800697]     Ответить | Цитировать Сообщить модератору
 Re: Использование ListBox в цикле  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 29765
Arbit,
На событие открытие формы, окна пробежать цикл и проставить в эти строки в колонку Решение текст с кнопкой "Выбрать".
Юзверь понажимает кнопки, а потом опять цикл.
И ставить на паузу не нужно.
Это как в магазине Корзина. Вы же не в паузе открываете корзину.
16 сен 17, 17:48    [20800847]     Ответить | Цитировать Сообщить модератору
 Re: Использование ListBox в цикле  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 29765
Arbit
для дальнейшего использования в цикле

Тут надо подробнее, т.к. обычно бизнес логика не зависит от сортировки.
16 сен 17, 17:51    [20800848]     Ответить | Цитировать Сообщить модератору
 Re: Использование ListBox в цикле  [new]
Arbit
Member

Откуда:
Сообщений: 190
Petro123, спасибо!
автор
Arbit
для дальнейшего использования в цикле

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

Подробнее

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

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

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

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

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

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

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

Как-то так

Заранее спасибо за готовность помочь
16 сен 17, 21:41    [20800995]     Ответить | Цитировать Сообщить модератору
 Re: Использование ListBox в цикле  [new]
Arm79
Member

Откуда: МО, Раменское
Сообщений: 3339
Странный алгоритм, конечно, но все же. Если предполагается интерактивный диалог с пользователем, ваш ListBox отображайте на отдельной форме. А форму в цикле показывайте через ShowModal и все
17 сен 17, 08:55    [20801160]     Ответить | Цитировать Сообщить модератору
 Re: Использование ListBox в цикле  [new]
наутилус
Member

Откуда: UA
Сообщений: 1176
Arbit,

Семён, сделай форму, в которой будет ListBox и в цикле делай frm.ShowDialog()
пока диалог не закроется (пользователь выбрал и нажал кнопку "подтвердить") цикл дальше не пойдёт
17 сен 17, 10:08    [20801195]     Ответить | Цитировать Сообщить модератору
 Re: Использование ListBox в цикле  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 29765
Arbit,
Ниже верно написали.
Если не MVP, то про учитывая ООП пишите
Цикл
ПрочестьСтроку ();
IF GialogForm = OK
ОбработатьСтроку (Строка)
КонецЦикла.

Модальная форма это пауза при показе.
17 сен 17, 10:42    [20801220]     Ответить | Цитировать Сообщить модератору
 Re: Использование ListBox в цикле  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 29765
Arbit,
По MV* лучше отделять БЛ от ГУИ.
17 сен 17, 10:45    [20801224]     Ответить | Цитировать Сообщить модератору
 Re: Использование ListBox в цикле  [new]
Arbit
Member

Откуда:
Сообщений: 190
Petro123,
Это и есть ГУИ у меня.
А вся БЛ у меня вообще в DLL на с++
С# у меня только как пользовательский интерфейс, правда ввод данных через именно
эту форму такой "авороченный". Но такова задумка. По-другому никак.
Прежде чем отправить в базу
нужно подготовить данные используя мини-парсинг.
17 сен 17, 14:50    [20801466]     Ответить | Цитировать Сообщить модератору
 Re: Использование ListBox в цикле  [new]
Arbit
Member

Откуда:
Сообщений: 190
наутилус, привет!

Все сделал, большое спасибо.
Правда я думал что можно обойтись без отдельной формы, но, видимо,
это единственный способ для интерактива в цикле.
17 сен 17, 14:53    [20801473]     Ответить | Цитировать Сообщить модератору
 Re: Использование ListBox в цикле  [new]
Arbit
Member

Откуда:
Сообщений: 190
Еще раз всем большая благодарность!
Хорошего дня!
17 сен 17, 14:54    [20801476]     Ответить | Цитировать Сообщить модератору
 Re: Использование ListBox в цикле  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 29765
Arbit
Это и есть ГУИ у меня.
А вся БЛ у меня вообще в DLL на с++

я говорил про MV* на C# для этого должен быть класс под формой - презентер.
Т.е. это не по MV* вот и всё что я сказал.
Arbit
По-другому никак.

над DLL делается обёртка-класс
Arbit
Правда я думал что можно обойтись без отдельной формы,

можно без неё, даже в одной процедуре т.к. нет потоков, но просто будет мешанина кода в одном классе-форме.
17 сен 17, 15:14    [20801506]     Ответить | Цитировать Сообщить модератору
 Re: Использование ListBox в цикле  [new]
Arbit
Member

Откуда:
Сообщений: 190
наутилус, у меня еще вопрос.
Этот RichtTextBox в форме это пока для отладки. Текст в нем форматированный по цвету.
И в базе он будет храниться в форматированном виде.
То есть со спец символами. И загружаться в грид будет форматированный
А в конечном варианте RichtTextBox должен быть одним из полей в DataGridView.

Ввод данных планируется делать в гриде.
Я смотрел в MSDN на примере DatePiker, но для меня это показалось сложновато
Можешь "на пальцах" объяснить как это прикрутить?
Или тыкнуть ссылкой на готовый пример, если где есть?
17 сен 17, 15:16    [20801507]     Ответить | Цитировать Сообщить модератору
 Re: Использование ListBox в цикле  [new]
Arbit
Member

Откуда:
Сообщений: 190
Petro123
Arbit
Правда я думал что можно обойтись без отдельной формы,

можно без неё, даже в одной процедуре т.к. нет потоков, но просто будет мешанина кода в одном классе-форме.

И то верно.
Одна дополнительная формочка в проекте погоды не сделает.
Короче- будет модальная форма. Спасибо!
17 сен 17, 15:20    [20801512]     Ответить | Цитировать Сообщить модератору
 Re: Использование ListBox в цикле  [new]
наутилус
Member

Откуда: UA
Сообщений: 1176
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

по аналогии можно сделать, не календарь, а ричтекстбокс
17 сен 17, 16:06    [20801548]     Ответить | Цитировать Сообщить модератору
 Re: Использование ListBox в цикле  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 29765
Arbit
А в конечном варианте RichtTextBox должен быть одним из полей в DataGridView.

насколько понял, из коробки в шарпе грид не поддерживает данного.
Т.е. надо много писать руками в Cell.Paint
imho
17 сен 17, 16:07    [20801553]     Ответить | Цитировать Сообщить модератору
 Re: Использование ListBox в цикле  [new]
наутилус
Member

Откуда: UA
Сообщений: 1176
Petro123,

из коробки нет, но и не так много руками писать. примеры выше )
17 сен 17, 16:08    [20801555]     Ответить | Цитировать Сообщить модератору
 Re: Использование ListBox в цикле  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 29765
наутилус
а это пример от майкрософта:
https://docs.microsoft.com/en-us/dotnet/framework/winforms/controls/how-to-host-controls-in-windows-forms-datagridview-cells

ёшкин кот. 700 строк кода для типа колонки(.
Жалко в шарпе грид слабенький.
17 сен 17, 16:09    [20801557]     Ответить | Цитировать Сообщить модератору
 Re: Использование ListBox в цикле  [new]
наутилус
Member

Откуда: UA
Сообщений: 1176
Petro123,

ну можно чужие компоненты поставить ) потом разбираться с их косяками и тормозами )
17 сен 17, 16:23    [20801571]     Ответить | Цитировать Сообщить модератору
 Re: Использование ListBox в цикле  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 29765
наутилус,
да. У нас Телерик.))
А грид в шарпе просили ещё лет 8 назад AFAIK)
А аффтару придётся поумерить хотелки для разноцветного циркового грида.
Удачи аффтару!
17 сен 17, 16:28    [20801577]     Ответить | Цитировать Сообщить модератору
 Re: Использование ListBox в цикле  [new]
Arbit
Member

Откуда:
Сообщений: 190
Petro123,
Когда очень "хочется", это хуже чем "болит" :))
17 сен 17, 20:51    [20801927]     Ответить | Цитировать Сообщить модератору
 Re: Использование ListBox в цикле  [new]
Cat2
Member

Откуда: Petroskoi, Karjala
Сообщений: 141392
Arbit
Еще раз всем большая благодарность!
Хорошего дня!

Жаль, что Вы подумали, что блестяще решили задачу.
Перебор строк в гриде - уже дурная практика.
Какую задачу Вы решаете?
17 сен 17, 22:17    [20802073]     Ответить | Цитировать Сообщить модератору
 Re: Использование ListBox в цикле  [new]
Arbit
Member

Откуда:
Сообщений: 190
наутилус
Arbit,
вот пример. сам не пробовал:
https://www.codeproject.com/Articles/31823/RichTextBox-Cell-in-a-DataGridView

Рабочий пример. Спасибо!
Схему понял: три своих класса от базовых (Column, Cell и Control ).
Пошел копипастить :)
17 сен 17, 22:22    [20802079]     Ответить | Цитировать Сообщить модератору
 Re: Использование ListBox в цикле  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 22645
Cat2
Какую задачу Вы решаете?

Чем заняться в будущем :)
18 сен 17, 09:27    [20802481]     Ответить | Цитировать Сообщить модератору
Все форумы / WinForms, .Net Framework Ответить