Событие ComboBox SelectedIndexChanged не запускается - PullRequest
1 голос
/ 27 января 2020

Я использую VS 2017 для приложения Visual C# (. Net 4.6.2, 32 бит), которое вызывает форму из основной формы. Во второй форме событие SelectedIndexChanged не запускается для одного из ComboBoxes. Ниже приведен код. Если я должен зарегистрировать событие, я не знаю как. Первоначально я скопировал и вставил ComboBoxes в форму. Затем я удалил этот элемент управления и заново добавил ComboBoxes из панели инструментов. Любая помощь будет оценена.

namespace Lottery_C_Sharp
{
    public partial class Dialog_Matches_Input_Lotomania : Form
    {
        MatchesMethods_LM m;
        public string[] lotomania_list = new string[10];
        public string[] pick10_list = new string[5];
        Utilities u;

        public Dialog_Matches_Input_Lotomania(MatchesMethods_LM mm)
        {
            InitializeComponent();

            m = mm;
            u = new Utilities();
            set_combos(); 

            comboBox1.SelectedIndex = 0;
            comboBox2.SelectedIndex = 0;
            comboBox3.SelectedIndex = 0;
        }
        private void comboBox3_SelectedIndexChanged(object sender, EventArgs e)
        {
            MessageBox.Show("comboBox3_SelectedIndexChanged");

            if (m.NumCurrLimit == 99)
            {
                set_lotomania_time_text();
                set_lotomania_totals_text();
            }
            else
            {
                set_pick10_time_text();
                set_pick10_totals_text();
            }
        }

        public void set_combos()
        {
            set_lists();

            comboBox1.Items.Clear();
            comboBox2.Items.Clear();
            comboBox3.Items.Clear();

            if (m.NumCurrLimit == 99)
            {
                textBox1.Text = "Brazilian LotoMania";

                AddToCombo(comboBox1, lotomania_list);
                comboBox1.SelectedIndex = 0;

                AddToCombo(comboBox2, lotomania_list);
                comboBox2.SelectedIndex = 0;

                AddToCombo(comboBox3, lotomania_list);
                comboBox3.SelectedIndex = 0;

                set_lotomania_time_text();
                set_lotomania_totals_text();

            }
            else
            {
                textBox1.Text = "USA New York Pick 10";

                AddToCombo(comboBox1, pick10_list);
                comboBox1.SelectedIndex = 0;

                AddToCombo(comboBox2, pick10_list);
                comboBox2.SelectedIndex = 0;

                AddToCombo(comboBox3, pick10_list);
                comboBox3.SelectedIndex = 0;

                set_pick10_time_text();
                set_pick10_totals_text();
            }
        }

Ответы [ 2 ]

1 голос
/ 27 января 2020

Вы должны зарегистрировать событие для вашего желаемого комбинированного списка в свойствах Дизайнера, например: How to register event in WinForms Designer

Он генерирует регистрацию события в Form1.Designer.cs (имя формы зависит от того, как вы мы назвали его) автоматически сгенерированный файл:

this.comboBox1.SelectedIndexChanged += new System.EventHandler(this.comboBox3_SelectedIndexChanged);

Затем Ваша функция, где Вы можете выполнить некоторые действия, когда событие происходит в Form1.cs

private void comboBox3_SelectedIndexChanged(object sender, EventArgs e)
{
    // Do something
}
1 голос
/ 27 января 2020

У вас есть несколько вариантов регистрации события.

Опция 1:

Регистрация в коде:

public Dialog_Matches_Input_Lotomania(MatchesMethods_LM mm)
{
    InitializeComponent();

    ...

    comboBox1.SelectedIndexChanged += ComboBox_SelectedIndexChanged;
}

Опция 2:

Дважды щелкните в конструкторе comboBox1, это автоматически добавит и зарегистрирует событие.

Опция 3:

Выберите comboBox1 в конструкторе, щелкните правой кнопкой мыши и выберите «Свойства», в окне свойств выберите значок события вверху (символ молнии), найдите «SelectedIndexChanged» и введите имя события или дважды щелкните, чтобы автоматически добавить и зарегистрировать событие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...