Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
20 / 19 / 1
Регистрация: 13.08.2012
Сообщений: 779
.NET 4.x

Событие изменения источника данных у ComboBox

18.03.2015, 13:43. Показов 2446. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется comboBox, к itemsSource биндится коллекция. Вопрос такой: есть ли событие у comboBox'a которое срабатывает при изменении этой коллекции ? OnSourceUpdate не срабатывает почему-то, или это не оно ?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.03.2015, 13:43
Ответы с готовыми решениями:

Событие после изменения текста combobox
Есть два combobox.меняю значение в одном.Жму enter - изменяю значение в другом.На основании его надо заполнить список второго комбика.Но...

Событие изменения данных itemSource у comboBox
Имеется comboBox, к itemsSource биндится коллекция. Вопрос такой: есть ли событие у comboBox'a которое срабатывает при изменении этой...

Изменения источника данных
В общемя мне надо что бы была возможность такая, я все данные заношу в таблицу. потом когда я делаю закрытие месяца эта таблица...

4
 Аватар для es_
217 / 216 / 114
Регистрация: 14.01.2013
Сообщений: 459
18.03.2015, 16:47
Похоже действительно такого события нет..
Идеологически верно было бы создать свой класс унаследованный от комбобокс, в нём создать событие которое бы при добавлении/удалении в коллекцию оповещало бы нас об этом. Но всё это сложно, нужно смотреть какие методы можно переопределять, если нельзя то писать свои и т.д. и т.п. Если хочешь - заморочься.
А так для простоты я бы в отдельном потоке проверял бы изменения в коллекции:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
    public partial class Form1 : Form
    {
        Thread tr;
        delegate void CT(string text); // делегат нужен для отправки сообщения на форму из "левого" потока
        public int countelements;     // для учёта изменений количества элементов в комбобоксе
        public Form1()
        {
            InitializeComponent();
            countelements = comboBox1.Items.Count;
            tr = new Thread(go_thread); // новый поток с методом для отслеживания изменений
            tr.Start();
            comboBox1.SelectedIndex = 0;
        }
        public void changeText(string text) // метод для отправки сообщения на форму из "левого" потока
        {
            this.Text = text;
        }
        private void button1_Click(object sender, EventArgs e)
        {
            comboBox1.Items.Add("что-нибудь");
        }
        private void go_thread()
        {
            CT coch = new CT(changeText); 
            while (true)
            {
                Thread.Sleep(100); // каждые 100 миллисекунд проверяем изменения в коллекции
                if (countelements != comboBox1.Items.Count)
                {
                    countelements = comboBox1.Items.Count;
                    this.BeginInvoke(coch, new object[] { "Коллекция изменилась" });
                }
            }
        }
        private void Form1_FormClosed(object sender, FormClosedEventArgs e) // будем обортить поток при закрытии формы, иначе поток так и будет висеть в памяти
        {
            tr.Abort();
        }
    }
P.S. в оглавлении темы написано изменения источника данных если это нужно то есть событие DataSourceChanged. А в тексте про изменении В коллекции - если это нужно, то читай выше
1
20 / 19 / 1
Регистрация: 13.08.2012
Сообщений: 779
18.03.2015, 17:38  [ТС]
а в WPF тоже нет ничего проще ?
0
 Аватар для es_
217 / 216 / 114
Регистрация: 14.01.2013
Сообщений: 459
19.03.2015, 08:17
Я, к сожалению, тебе в этом не смогу помочь, не юзал. А ты попробуй запости вопрос в ветке https://www.cyberforum.ru/wpf-silverlight/
0
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
19.03.2015, 11:40
NEvOl,
через ObservableCollection. Он похож на List, но еще умеет реагировать на изменения своей коллекции.

Пример, как изменения коллекции автоматически меняют содержимое ComboBox
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        ObservableCollection<string> obCollection; 
        private void Form1_Load(object sender, EventArgs e)
        {
            obCollection = new ObservableCollection<string>(); //можно сразу туда массив загнать  obCollection = new ObservableCollection<string>(исходный массив)
            obCollection.CollectionChanged += new System.Collections.Specialized.NotifyCollectionChangedEventHandler(obCollection_CollectionChanged);
 
            obCollection.Add("s");
            obCollection.Add("d");                         
        }
 
        void obCollection_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
        {
            comboBox1.Items.Clear();
            comboBox1.Items.AddRange(obCollection.ToArray());           
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            obCollection.Add("z");          
        }
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.03.2015, 11:40
Помогаю со студенческими работами здесь

Как отследить событие изменения значения в ComboBox (2-Dropdown List)?
Привет всем Вопрос 1: Облазил все свойства стандартного Combo Box - так и не нашел - есть ли возможность в оном при развертывание по...

ComboBox и ValueMember: использование источника данных
В WinForms работает следующий метод public void FillLB() { SqlConnection sqlconn1 = new...

Ошибка в ComboBox после добавления источника данных
Есть класс, который я использую в качестве источника данных, он имеет вид: public class DemoSource { public static...

Событие изменения данных в вычисляемом поле?
Я, наверное, в очередной раз спрошу какую-то банальность, но вот пока что-то не могу найти события, которое бы &quot;ловило&quot; изменение...

Как отловить событие изменения данных в DataGridView?
доброго времени суток! припустим у меня есть таблица dataGridView, и мне нужно отследить желательно свойством какимто, было ли...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru