gpt4 book ai didi

c# - #NULL 不是 Int32 的有效值

转载 作者:太空宇宙 更新时间:2023-11-03 13:43:04 26 4
gpt4 key购买 nike

当我调试代码时,出现错误 #NULL is not a valid value for Int32

private void satelliteComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
Helper.SetWaitCursor();
if (satelliteComboBox.SelectedValue != null)
{
var satelliteId = Convert.ToInt32(satelliteComboBox.SelectedValue);
satelliteStatusUserControl.DataSource =
_satelliteStatusBusinessService.GetSingleSatellite(
new Dictionary<string, object> { { "SatelliteID", satelliteId } }, true);
//2012.07.07 get colors for all machine status
satelliteStatusUserControl.DataSource.DefectColors =
_satelliteStatusBusinessService.GetDefectColors().ToList();

foreach (var defectColor in
satelliteStatusUserControl.DataSource.DefectColors)
{
MachineStatusCtrl.AddMachineStatusColors(
defectColor.DefectTypeID,
defectColor.DefectType,
defectColor.OEEColor);
}
//2012.07.07
satelliteStatusUserControl.DataBind();
}
Helper.SetDefaultCursor();
}

我在 foreach 循环中遇到这个错误

更新:这是 AddMachineStatusColors

的实现
public static void AddMachineStatusColors(int statusColorId, string StatusName, string oeeColor)
{
MacStatusColors macStatusColor;

//add dummy colors with unknow till the next defectId so that it will be easy to get color later while painting.
for(int Index = StatusColors.Count; Index < statusColorId ; Index++)
{
macStatusColor = new MacStatusColors();
StatusColors.Add(macStatusColor);
}

macStatusColor = new MacStatusColors();
macStatusColor.DefectTypeID = statusColorId;
macStatusColor.DefectType = StatusName;
macStatusColor.OEEColor1 = ControlPaint.Dark(getColorFromString(oeeColor));
macStatusColor.OEEColor2 = ControlPaint.Light(getColorFromString(oeeColor));
StatusColors.Add(macStatusColor);
}



public static Color getColorFromString(string oeeColor)
{
if (oeeColor[0] != '#') { oeeColor = '#' + oeeColor; }
return System.Drawing.ColorTranslator.FromHtml(oeeColor);
}

最佳答案

嗯,defectColor.OEEColor好像是null并且您的数据模型不允许该值为 null .三种可能的解决方案:

  1. 更改数据模型,使字段可以是null
  2. 确保defectColor.OEEColor不是 null
  3. 将行更改为:

    MachineStatusCtrl.AddMachineStatusColors(..., ..., defectColor.OEEColor ?? <default value>);

<default value>是 0 或任何其他 int您要用来表示“颜色是 null”的值。


您添加了 AddMachineStatusColors 的代码方法。谢谢,但我仍然说您的代码假定 defectColor.OEEColor不是 null .您的代码中至少有两行我假设 defectColor.OEEColor可能不是 null :

macStatusColor.OEEColor1 = ControlPaint.Dark(getColorFromString(oeeColor));
macStatusColor.OEEColor2 = ControlPaint.Light(getColorFromString(oeeColor));

显示 getColorFromString 的代码,请或告诉我们您的 AddMachineStatusColors 中的哪一行方法错误发生!


好的,现在我们到了某个地方。 defectColor.OEEColor包含字符串值 "null"!!这意味着,defectColor.OEEColor本身 不是 null ,但它包含单词“null”

因此,下一行将单词“null”变成了“#null”(因此您的奇怪问题标题是“#null 不是有效值...”):

if (oeeColor[0] != '#') { oeeColor = '#' + oeeColor; }

之后oeeColor具有值“#null”,然后以下行(我想,因为您没有向我们提供有关异常真正发生在哪一行的任何详细信息...)抛出错误:

return System.Drawing.ColorTranslator.FromHtml(oeeColor);

您必须确保 defectColor.OEEColor既不是 null (即“没有值”)并且它具有的值是有效的 HTML 颜色字符串!

关于c# - #NULL 不是 Int32 的有效值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16332341/

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