Nano Hash - криптовалюты, майнинг, программирование

Событие Windows Form C# MouseClick не срабатывает при нажатии переключателя

Я работаю с формой окна, в которой я создал серию радиокнопок программно. Я хочу создать событие, которое регистрирует, что одна из этих радиостанций была выбрана, и если это так, я активирую кнопку «ОК».

У меня есть обработчик событий...

        protected void Checked_Changed(Object sender, EventArgs e)
    {
        foreach (Control c in this.Controls)
        {
            if (c is RadioButton)
            {
                RadioButton r = (RadioButton)c;
                if (r.Checked)
                {
                    this.OK.Enabled = true;
                }
            }
        }            
    }

Но!! проблема в том, что я не знаю, какое событие я должен искать, чтобы вызвать этот обработчик.

Я попытался использовать

  • Нажмите
  • MouseClick
  • МышьВверх

            this.Click += new System.EventHandler(this.Checked_Changed);
    

.. события, но это работает, только если я нажимаю на что-либо, кроме радиокнопок.

Я надеюсь, что вы, ребята, можете мне помочь. Миллион благодарностей, Джек.


  • Довольно расплывчато, очевидно, вы делаете это неправильно. Вероятность того, что this.Click верна, очень близка к нулю. Это похоже на событие Click формы, вместо этого подпишитесь на событие CheckChanged переключателя. Все они. 02.09.2015

Ответы:


1

Вы назначаете обработчик события клика Form, а не переключателям.

Вот пример программного создания переключателей и назначения обработчика событий.

private void Form1_Load(object sender, EventArgs e)
{
    // Create radio buttons
    RadioButton rb1 = new RadioButton();
    RadioButton rb2 = new RadioButton();
    RadioButton rb3 = new RadioButton();

    // Positioning on form
    rb1.Left = 10;
    rb2.Left = 10;
    rb3.Left = 10;
    rb1.Top = 10;
    rb2.Top = 30;
    rb3.Top = 50;

    // Assign event handler
    rb1.CheckedChanged += new EventHandler(RadioCheckChanged);
    rb2.CheckedChanged += new EventHandler(RadioCheckChanged);
    rb3.CheckedChanged += new EventHandler(RadioCheckChanged);

    // Add to form
    this.Controls.Add(rb1);
    this.Controls.Add(rb2);
    this.Controls.Add(rb3);
}

private void RadioCheckChanged(object sender, EventArgs e)
{
    // Enable button here
}
02.09.2015

2

Вы используете this.Click, вам нужно использовать this.radioButton.CheckedChanged или .Click или любое другое событие, которое вы используете, иначе вы подписываетесь на форму, а не на переключатель

this.radioButton.CheckedChanged += new System.EventHandler(this.Checked_Changed);
02.09.2015
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..