Здравия вам!
Есть некий общий список:
internal static ArrayList PhoneAbons;
И есть формы, которые используют этот список в двух контролах:
private System.Windows.Forms.ComboBox BackList;
private System.Windows.Forms.ComboBox PhoneList;
...
PhoneList.DataSource = PhoneAbons;
BackList.DataSource = PhoneAbons;
В результате получается, что выбирая элемент списка в одном контроле, другой дублирует это действие.
Подскажите, пожалуйста, как это обойти? А то приходится тупо вести список в каждом контроле
И ещё..
PhoneAbons.Add(ctl);
PhoneList.SelectedItem = ctl;
Не работает!!! Отладчик показывает, что в PhoneAbons элемент добавлен, а в PhoneList.Items его нету!
Однако следующий вызов (PhoneList.SelectedItem = ctl) — некоторое время спустя уже срабатывает.
Неужели механизм привязок тут совершенно бесполезен?
07.10.05 13:52: Перенесено модератором из '.NET' — AndrewVK
MM>MM> private System.Windows.Forms.ComboBox BackList;
MM> private System.Windows.Forms.ComboBox PhoneList;
MM>...
MM> PhoneList.DataSource = PhoneAbons;
MM> BackList.DataSource = PhoneAbons;
MM>
MM>В результате получается, что выбирая элемент списка в одном контроле, другой дублирует это действие.
Не очень понятно: что значит дублирует? Значение SelectedItem-то должны быть различные для 2-х различных инстансов контролов.
MM>MM> PhoneAbons.Add(ctl);
MM> PhoneList.SelectedItem = ctl;
MM>
MM>Не работает!!! Отладчик показывает, что в PhoneAbons элемент добавлен, а в PhoneList.Items его нету!
А ты выполнил
PhoneList.DataSource = PhoneAbons;
PhoneList.Databind();
?
Здравствуйте, vitaly_spb, Вы писали:
MM>>MM>> private System.Windows.Forms.ComboBox BackList;
MM>> private System.Windows.Forms.ComboBox PhoneList;
MM>>...
MM>> PhoneList.DataSource = PhoneAbons;
MM>> BackList.DataSource = PhoneAbons;
MM>>
MM>>В результате получается, что выбирая элемент списка в одном контроле, другой дублирует это действие.
_>Не очень понятно: что значит дублирует? Значение SelectedItem-то должны быть различные для 2-х различных инстансов контролов.
Именно, что это два разных инстанса контрола, но привязанны к одному списку. И в результате их SelectedItem синхронизован.
т.е. нельзя выбрать разные элементы в этих контролах. Выбираешь в одном, в другом выбирается автоматически.
MM>>MM>> PhoneAbons.Add(ctl);
MM>> PhoneList.SelectedItem = ctl;
MM>>
MM>>Не работает!!! Отладчик показывает, что в PhoneAbons элемент добавлен, а в PhoneList.Items его нету!
_>А ты выполнил
_>_>PhoneList.DataSource = PhoneAbons;
_>PhoneList.Databind();
_>
нет. System.Windows.Forms.ComboBox.Databind() не существует.
Здравствуйте, Magic Master, Вы писали:
MM>Подскажите, пожалуйста, как это обойти? А то приходится тупо вести список в каждом контроле
У кого-нить из них надо сделать:
xxx.BindingContext = new BindingContext();
Здравствуйте, Andrbig, Вы писали:
A>У кого-нить из них надо сделать:
A>A>xxx.BindingContext = new BindingContext();
A>
Помогло. Но не полностью. Теперь списки разделены, но изменение в ArrayList не отображается в контроле, которому выделил new BindingContext(). Т.е. этот контрол не синхронизуется теперь вообще.
И второй вопрос с этим так же связан — так как, видимо, сразу после изменения ArrayList там тоже не происходит синхронизация в контроле. Но происходит позже. Как её форсировать?
] сразу после изменения ArrayList там тоже не происходит синхронизация в контроле. Но происходит позже. Как её форсировать?
см.
http://www.gotdotnet.ru/Forums/Windows/211960.aspx
данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение