Поле со списком панели инструментов onselectionchangecommitted не работает

Я пытаюсь запустить некоторый код, когда пользователь делает выбор мыши в поле со списком панели инструментов на winform и пытается заставить OnSelectionChangeCommitted работать (ссылка здесь), аналогично этот вопрос. Я не могу использовать метод SelectedIndexChanged, потому что первый элемент выбирается автоматически, когда пользователь щелкает поле со списком, которое затем запускает код, и я бы предпочел не использовать фокус или логическое значение.

Код ниже не срабатывает, когда пользователь делает выбор в поле со списком, что я делаю неправильно?

protected virtual void bxDEAL_SELECT_OnSelectionChangeCommitted(EventArgs e)
        {
            MessageBox.Show("onselect value changed");
        }

person Zeus    schedule 23.05.2016    source источник
comment
Эта подпись метода неверна. Отсутствует параметр Object sender. Вы не можете подключить этот метод к событию, иначе он не скомпилируется.   -  person DonBoitnott    schedule 24.05.2016


Ответы (2)


Где ваш параметр отправителя?

Это должно выглядеть примерно так

private void comboBox1_SelectionChangeCommitted(object sender, EventArgs e)
{
     // your code
}
person solujic    schedule 24.05.2016
comment
Вы пытались поместить оператор if внутри slectedIndexChanged? - person solujic; 24.05.2016
comment
поместите целочисленное значение -1 вне события и проверьте, если selectedIndex = значение, если это не то значение, которое вы можете запустить свой код... затем установите значение = slectedIndex - person solujic; 24.05.2016
comment
Обработчик не подключен, иначе отсутствующий параметр sender вызвал бы ошибку компилятора. - person DonBoitnott; 24.05.2016
comment
@DonBoitnott Я согласен, я не смог найти событие OnSelectionChangeCommitted, указанное в свойствах/событиях со списком, поэтому я ввел его вручную. Думаю, это не зацепит. Какой правильный метод? - person Zeus; 25.05.2016
comment
comboBox1.SelectionChangeCommitted += comboBox1_SelectionChangeCommitted; - person DonBoitnott; 25.05.2016
comment
спасибо, но я получаю ошибку компиляции на bxDEAL_SELECT.SelectionChangeCommitted += bxDEAL_SELECT_SelectionChangeCommitted; Error CS1061 'ToolStripComboBox' does not contain a definition for 'SelectionChangeCommitted' and no extension method 'SelectionChangeCommitted' accepting a first argument of type 'ToolStripComboBox' could be found (are you missing a using directive or an assembly reference?) - person Zeus; 25.05.2016
comment
также не должно быть OnSelectionChangeCommitted вместо SelectionChangeCommitted? - person Zeus; 25.05.2016
comment
если я использую bxDEAL_SELECT.OnSelectionChangeCommitted += bxDEAL_SELECT_OnSelectionChangeCommitted;, я получаю ошибку компиляции Error CS0122 ToolStripComboBox.OnSelectionChangeCommitted(EventArgs)' is inaccessible due to its protection level - person Zeus; 25.05.2016

Вам нужно вызвать базовый объект ComboBox, чтобы получить доступ к зафиксированному событию.

bxDEAL_SELECT.ComboBox.SelectionChangeCommitted += ComboBoxOnSelectionChangeCommitted;

private void bxDEAL_SELECT_OnSelectionChangeCommitted(object o, EventArgs eventArgs)
{
    \\Your code goes here.
}
person Bram Vaessen    schedule 05.07.2019