mayorovp: Если я изменю BindingList - изменится связанный с ним UI элемент управления. Если я изменяю UI элемент - BindingList не изменится (без дополнительного рутинного кода).
Изначальный вопрос можно переформулировать как "Существует ли коллекция, которую можно связать с DataGridView (ListBox) так, чтобы изменения в DGV, вносимые юзером во время работы программы, тут же отражались в коллекцию без дополнительного рутинного кода".
Грубо говоря, есть у меня коллекция и DGV. Добавились во время работы программы 3 строки в коллекцию - тут же добавились 3 строки в DGV. Юзер почесал в затылке, удалил две строки из DGV - две строки тут же удалились из коллекции. Вот чего хочется.
Я хочу в одном методе работать либо только с коллекцией, либо только UI контролом (кроме момента установки связи). Как-то так.
Рутина потому, что нужно предусмотреть редактирование строки, определить, к какому из элементов коллекции относится строка, продумать добавление\удаление элемента. А потом все закодировать. И протестировать. Ничего интересного, короче.
С хорошим механизмом двусторонней связки поставил бы DGV.DataSource = MagicCollection, и пару методов на инициализацию\сохранение. Малина!
mayorovp: Это решает задачу, но рутина ведь :(
По комментарию из прошлой ветки: на wpf обнаружились двунаправленные связи, обязательно надо будет глянуть.
mayorovp , Глянул в сторону BindingList. Взял ListBox lb, установил lb.DataSource = _bList, lb отлично заполняется из _bList. При попытке удалить строку из lb, падает ArgumentException "Изменение коллекции элементов невозможно, если задано свойство DataSource." _bList.AllowRemove = true.
Можно ли как-то сделать, чтобы при удалении строки в lb автоматом исключался объект из _bList?
(Я исхожу из того, что DataSource работает одинаково у ListBox и DataGridView).
Увы, применить в данном случае не получится - WinForms задачка, перепрыгнуть на WPF не получится. Да и простоты, вроде, не добавится. Но все равно спасибо, в будущем погляжу на паттерн подробнее.
littleguga: А чего именно Вы хотите добиться? Чтоб вторая форма открылась, там что-то вычислялось, но при этом что-то вычислялось и на первой? Тогда только события могут и не спасти, скорее всего, вторую форму нужно запускать в отдельном потоке.
littleguga: Если это специальная форма для возвращения одного значения - несомненно. Правда, в таком случае еще стоит using добавить к созданию формы.
Если же у Вас должна крутиться какая-то логика на первой форме, в зависимости от действий на второй - тут уже смотреть надо.
У Вас скилл "программинга в общем" выше скилла по шарпу, но сама задачка простая?
Насколько я понял, WCF может восприниматься как надстройка над Remoting (при определенной конфигурации).
Низкий уровень абстракции - это сокеты? Как на них писать подобные вещи более-менее понятно, но рутина времени займет сильно много.
А какая реализация может считаться неправильной? В качестве нагрузки планирую подвесить на сервер какого-нибудь самообучающегося бота (возможно, для каждого из игроков).
Изначальный вопрос можно переформулировать как "Существует ли коллекция, которую можно связать с DataGridView (ListBox) так, чтобы изменения в DGV, вносимые юзером во время работы программы, тут же отражались в коллекцию без дополнительного рутинного кода".
Грубо говоря, есть у меня коллекция и DGV. Добавились во время работы программы 3 строки в коллекцию - тут же добавились 3 строки в DGV. Юзер почесал в затылке, удалил две строки из DGV - две строки тут же удалились из коллекции. Вот чего хочется.
Я хочу в одном методе работать либо только с коллекцией, либо только UI контролом (кроме момента установки связи). Как-то так.