解决 对象引用未设置 - 特定福彩12选5走势图?

颂歌

众所周知的成员
加入
2020年12月11日
消息
122
编程经验
Beginner
我想知道是否有人知道为什么只有一条福彩12选5走势图抛出此参考。

我正在从一个SQL下载一个视图,到目前为止所有条目都是绝对精细的,但然后我选择1件(超过9,500)并抛出这个错误。

我已经检查了SQL,并以此格式存在福彩12选5走势图:

X12345 - 论坛XY-ABCDEFG-ABCDEFGABCDEF-ABCDEFGH

没有不同的角色,没有外国人物,没有重大或任何那种性质。只是想知道是否有人可以看到为什么这个福彩12选5走势图可能会抛出除C#之外 - 有太多的字符,太多了 -

我只是看不到为什么这款特定的福彩12选5走势图,这么多,都会抛出一个例外,我相信福彩12选5走势图中有更长的字符串,所以目前有点丢失。

福彩12选5走势图正在填充一个列表框,当时DoubleClicked填充了文本框。代码非常简单,适用于其他福彩12选5走势图,因此我认为这不是一个编码问题,但如果您需要它,它在下面。

C#:
private void listBox2_DoubleClick(object sender, EventArgs e)
        {
            hbox.Text = listBox2.SelectedValue.ToString();
            pbox.Text = listBox1.SelectedValue.ToString();
            tl.Text = listBox3.SelectedValue.ToString();
        }
 
Solution
好吧,这是:

C#:
public void listbox1.DoubleClick(object sender, EventArgs e)
{
    string code = (string)listBox1.SelectedValue;
    textBox1.Text = code.Trim();
}

浪费的时间是因为有人没有正常化他们的福彩12选5走势图.....

jmplhinney.

C#论坛主持人
工作人员
加入
2011年4月23日
消息
3,720
地点
悉尼,澳大利亚
编程经验
10+
It seems fairly obvious that the SelectedValue for one of those ListBoxes is null when that code is executed. The obvious first step is determine which one. The obvious second step is to look at the SelectedItem to see whether anything is selected and, if so, what exactly it contains. For a SelectedValue property to be null, at least one of the following must be true:
  1. The ValueMember was not set.
  2. 没有选择项目。
  3. The selected item contains null in the property specified by the ValueMember.
您需要确定它是这样的,所以您知道您正在尝试解决的问题。

BTW, what type is the property specified by the ValueMember? If it is String then you ought to be casting as type String rather than converting by calling ToString. You can cast null as type String without issue.
 

颂歌

众所周知的成员
加入
2020年12月11日
消息
122
编程经验
Beginner
这是一些非常好的建议,那么JMC,一如既往地,铸造它会否定异常失败。

至于潜在的问题。

这是棘手的,绝大多数其他例子的工作(除了另一个我刚找到的另一个,我的名字中的所有短划线( - ))

我不认为这是一个设置,如valuemember(虽然我确实检查 - 并且被设置)。

Valuemmember必须将我寄回NULL ....但是这是奇怪的部分....我有唯一的ID列表中的列表 - 如果您通过唯一ID过滤列表框,则列表框2筛选 - 并显示列表框中的第一个帖子中设置的名称。

只有当您双击(唯一ID或名称列表框)时,请询问它填充TextBox,它会抛出NULL的异常 - 但它是要看到但不是填充。

当我投入串然后双击时,TextBox是空白的 - 所以它肯定会抛出我的空福彩12选5走势图......我只是不知道为什么 - 福彩12选5走势图在那里?

编辑 - 忘记提到有一个选定的标题,因为列表框通过Databinding链接....并且您可以看到它被选中,即使您在名称(您要假设选择它)上的DOUBLECLICK它仍然会提供空输出。
 
Last edited:

jmplhinney.

C#论坛主持人
工作人员
加入
2011年4月23日
消息
3,720
地点
悉尼,澳大利亚
编程经验
10+
你似乎猜测很多东西,而不是实际调试你的代码。你不需要猜测。调试器会告诉你。

Place a breakpoint at the top of that code and then, when the debugger breaks at that line, you can use the tools provided to look at all the relevant values. You can actually look at the SelectedValue of each ListBox to see if one is null and which it is. Once you determine that, you can look at both the SelectedItem and ValueMember of that same ListBox.

如果您不知道如何调试,那么停止您现在正在做的事情和学习。那里有很多教程,我也相信 @sheepings. 或者 @skydiver 在他们的签名中有一个链接。我们希望在这里发布一个问题时,您将已经调试了代码。
 

颂歌

众所周知的成员
加入
2020年12月11日
消息
122
编程经验
Beginner
好的,我认为问题是在列表框1所选项目问题显示之前发生的问题 - 这就是你怎么说的,这是一个不同问题的症状。

我遵循断点,它选择了它,并选择了value - 当然它确实如此,如果它不存在,它会为其他9,000个条目工作....但它消失了。

不是因为双击,不是因为任何行为。

如果我搜索这段福彩12选5走势图,它将在列表框(作为唯一ID)中显示,并列出列表框(作为名称) - 它位于福彩12选5走势图库中。

然后,如果我清除文本框,有效地清除过滤器,列表框重新填充.....除了现在丢失的一条福彩12选5走势图。

如果我搜索它,它就不在那里。如果我滚动福彩12选5走势图,则在列表框1或列表框中不存在。请记住,我没有触摸超越过滤的福彩12选5走势图。我没有双击它进入文本框,我刚过滤到它,将其显示为列表框中的单个项目...然后左。

我的过滤器代码只是:

bind:
bindingsource.Filter = $"UniqueID LIKE '%{code.Text}%'";

就是这种行为,我认为,这是将DoubleClick打破了TextBox函数...当然当你dblclick时,TextBox更改,它会跳过TextBoxChanged事件,以查看它是否需要过滤......然后何时需要过滤...回来....福彩12选5走势图消失 - 不是因为这个代码 - 但是因为我真的不明白的东西.....如果这发生在每一段福彩12选5走势图中......我能理解,我可以工作和修复......但只是奇怪的福彩12选5走势图?这个,但不是那个?

它甚至不是一个随机错误,它在同一块福彩12选5走势图上是相同的错误......但不是它之前的福彩12选5走势图,而不是它之后的福彩12选5走势图...只是那段福彩12选5走势图。

作为更新,列表中的项目数量不会更改。只需这段福彩12选5走势图对于所有意图和目的都不可见。
 
Last edited:

jmplhinney.

C#论坛主持人
工作人员
加入
2011年4月23日
消息
3,720
地点
悉尼,澳大利亚
编程经验
10+
当你有这样的问题时,剥离绝对基础是一个好主意。使用要复制此问题的所有问题创建一个新项目,并且没有更多。当孤立时更容易专注于特定功能。如果您仍然无法解决问题,您可以使用最小示例为我们提供重现问题的说明。如果我们可以复制问题而无需复制项目中的所有无关内容,我们都可以为您诊断问题。
 

颂歌

众所周知的成员
加入
2020年12月11日
消息
122
编程经验
Beginner
感谢JMC,另一个关于故障排除的良好建议,我将放入我的记忆库。

我不会发布代码,因为我看到问题是什么......它不是代码,它是福彩12选5走势图 - 这是我最初的想法。

我在看它,我注意到这一条福彩12选5走势图上的数字看起来像这样:

"A12345 "

这个数字通常是:

"A12346"

这是在造成问题的末尾的那个空间,因为列表框不考虑空间 - 即使是底层福彩12选5走势图,所以当您填充文本框时,ListBox的选项item为数字与空格不存在....这又取消了名称 - 因为它们被绑定在一起,因此当填充名称的文本框时,没有值,没有选择,因为没有选择 - 它没有在进行过滤器检查之前填充数字时,会填充TextBox时出现

要查看我是否可以修剪福彩12选5走势图,使其长度仅为6个字符,无论是在摄取的点还是或在我填充文本框的点中 - 给定该数字永远不会超过6个字符。
 

颂歌

众所周知的成员
加入
2020年12月11日
消息
122
编程经验
Beginner
好吧,这是:

C#:
public void listbox1.DoubleClick(object sender, EventArgs e)
{
    string code = (string)listBox1.SelectedValue;
    textBox1.Text = code.Trim();
}

浪费的时间是因为有人没有正常化他们的福彩12选5走势图.....
 
解决方案

jmplhinney.

C#论坛主持人
工作人员
加入
2011年4月23日
消息
3,720
地点
悉尼,澳大利亚
编程经验
10+
浪费的时间是因为有人没有正常化他们的福彩12选5走势图.....
习惯它。福彩12选5走势图迁移是我存在的祸根。我的公司经常创建定制的Web应用程序来替换现有应用程序,并且我从未遇到过一个福彩12选5走势图库,这些福彩12选5走势图库不是完整的耻辱。
 

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,890
地点
切萨皮克,va.
编程经验
10+
并且讽刺将在花费许多小时后,正常化您的福彩12选5走势图,其他人将继续进行DataWarehousing和/或福彩12选5走势图挖掘 - 由于某些原因,他们希望平衡您的正常规范化福彩12选5走势图,因为分析工具他们使用无法处理归一化福彩12选5走势图。
 
最佳 底部