5

请看下面的代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace calc
{
    public partial class Form1 : Form
    {
        //code removed

        public Form1()
        {

            InitializeComponent();
            calculator = new Calculator();

            maleRadio.PerformClick();
            englishRadio.PerformClick();
        }


/*code removed*/

        //Action Listener for Female Radio button
        private void femaleRadio_CheckedChanged(object sender, EventArgs e)
        {
            //code removed
        }

        //Action Listener for English Radio button
        private void englishRadio_CheckedChanged(object sender, EventArgs e)
        {
            //code removed
        }



    }
}

我对 c# 有点陌生。我在这里要做的是以event handlers编程方式触发构造函数中的单选按钮。我遵循的方式maleRadio.PerformClick();无济于事。如何以编程方式调用构造函数中的事件处理程序?

4

3 回答 3

10

您可以像任何其他方法一样调用事件处理程序:

public Form1()
{
   InitializeComponent();
   calculator = new Calculator();

   maleRadio_CheckedChanged(maleRadio, null);
   englishRadio_CheckedChanged(englishRadio, null);
}
于 2013-07-26T05:46:06.673 回答
1

您可以femaleRadio_CheckedChanged在构造函数上调用该函数。或者您可以设置单选按钮的选定索引的值来触发事件:

femaleRadio_CheckedChanged(null, null);
or
femaleRadio.SelectedIndex = 0;
于 2013-07-26T05:47:28.553 回答
1

只需调用方法:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        radioButton1.CheckedChanged += radioButton1_CheckedChanged;

        //Triggering the handlers programmatically
        radioButton1_CheckedChanged(null, null);
        radioButton2_CheckedChanged(null, null);
    }

    //this handler is manually added in the constructor
    void radioButton1_CheckedChanged(object sender, EventArgs e)
    {
        Console.WriteLine("Test event 1");
    }

    //This handler is auto-generated by designer, after adding the event in the designer
    private void radioButton2_CheckedChanged(object sender, EventArgs e)
    {
        Console.WriteLine("Test event 2");
    }
}

输出将是:

测试事件 1 测试事件 2 测试事件 1

因为在构造函数完成后,radiobutton1 将被默认选择。

于 2013-07-26T05:48:23.260 回答