SelectedIndexChanged 在 C# 中的类构造函数之前调用

pin*_*dol 1 c# selectedvalue selectedindexchanged winforms

我在我的 C# 应用程序中创建一个名为 Acquisti 的类。然后我在表单构造函数中初始化它,然后在组合框 SelectedIndexChanged 事件中调用此类的方法。问题是,当我运行该程序时,出现错误,指出我创建的 Acquisti 类的对象为 null。这意味着 SelectedIndexChanged 事件在表单构造函数之前调用,不是吗?我也尝试过 SelectedValueChanged 事件,但我遇到了同样的问题。这是简单的代码:

Acquisti _acquisti;

    public Form1()
    {
        InitializeComponent();
        WindowState = FormWindowState.Maximized;

        for (int i = DateTime.Now.Year; i >= 2000; i--)
            annoAcquisti.Items.Add(i);

        annoAcquisti.SelectedIndex = 0;

        _acquisti = new Acquisti();
    }



    private void annoAcquisti_SelectedIndexChanged(object sender, EventArgs e)
    {
        _acquisti.load(ref acquistiDGV, annoAcquisti.SelectedItem.ToString());
    }
Run Code Online (Sandbox Code Playgroud)

Hab*_*bib 5

SelecteIndexChanged由于行而被调用:

annoAcquisti.SelectedIndex = 0;
Run Code Online (Sandbox Code Playgroud)

_acquisti之后你就开始初始化了。您可以先移动该行,例如:

public Form1()
{
    InitializeComponent();
    _acquisti = new Acquisti(); //move it here
    WindowState = FormWindowState.Maximized;

    for (int i = DateTime.Now.Year; i >= 2000; i--)
        annoAcquisti.Items.Add(i);

    annoAcquisti.SelectedIndex = 0;

}
Run Code Online (Sandbox Code Playgroud)

由于控件移动到SelectedIndexChanged事件并且此时_acquisti仍然为空,这就是您收到异常的原因。