gpt4 book ai didi

c# - 未设置对象引用

转载 作者:太空狗 更新时间:2023-10-29 23:08:03 24 4
gpt4 key购买 nike

这里有类似的问题,但没有一个适合我的特定案例场景。

我有一个带按钮的 Windows 窗体。该按钮附加到事件处理程序,如下所示:

private void mybutton_Click(object sender, EventArgs e)
{
// do some processing here
}

此外还有一个组合框,其中选择的更改应该会触发上面定义的按钮事件处理程序。

private void mycombobox_SelectedIndexChanged(object sender, EventArgs e)
{
mybutton_Click(sender, e); // this is the line which pops up the dialog
}

代码在运行时完全按照预期工作,但我在编译时收到一个对话框提示,内容为:

object reference not set to an instance of an object

没有其他错误或警告。

谷歌搜索告诉我,如果程序试图访问设置为 null 的引用类型变量的成员,则会导致此消息错误。

然而,当我在 Debug模式下运行这段代码时,sender 和 event(e) 变量都不为空。

那么为什么会弹出这个对话框?

如果这是一个错误或警告 - 它应该显示为错误或警告,但没有发生那种情况。

截图如下: enter image description here

编辑:回答评论中提出的问题

如您在屏幕截图中所见,没有错误。

该程序运行良好 - 仅此弹出

弹出窗口是由组合框 selectedIndexChanged 函数中的行:mybutton_Click(sender, e); 引起的。

mybutton_Click(sender, e) 在处理过程中不使用任何参数 sender 或 e。

我也没有安装任何 VS 扩展。

最佳答案

在 ComboBox 的 SelectedIndexChanged-event 中调用按钮的 Click-event 不是一个好的设计,这也可能是错误的原因.

最好将您的逻辑放在一个单独的方法中,并在 Click 和 SelectedIndexChanged 事件中调用它,如下所示:

private void UpdateSomething()
{
// Do whatever you want
}

private void mybutton_Click(object sender, EventArgs e)
{
UpdateSomething();
}

private void mycombobox_SelectedIndexChanged(object sender, EventArgs e)
{
UpdateSomething();
}

关于c# - 未设置对象引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19854646/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com