You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

代码问题:WorkshopIsPainted始终为null,与workshop.Painted状态无关

问题分析与修复方案

我一眼就揪出了导致WorkshopIsPainted始终为null的两个关键问题,咱们逐个拆解:

1. 逻辑分支的致命漏洞

你的timer4_Tick方法里的逻辑写反了方向:

if (!workshop.painted) { 
    WorkshopIsPainted = workshop.Painted; 
} else return; 

这意味着只有当workshop.painted为false时,才会给WorkshopIsPainted赋值;如果workshop.Painted是true,代码直接执行return跳过赋值步骤。而WorkshopIsPainted的初始值就是null,所以当workshop.Painted为true时,它永远不会被更新,一直保持null状态。

2. 大小写不一致的隐性bug

你判断条件用的是workshop.painted(小写p),但赋值时用的是workshop.Painted(大写P)。如果workshop类里的属性是符合C#规范的Painted(大写开头),那workshop.painted要么是另一个未初始化的字段,要么就是笔误——这会让判断逻辑完全偏离你的预期,比如实际Painted是true,但painted是默认的false,进一步加剧赋值异常。

修复后的代码

先修正逻辑和大小写问题,再确保timer能正常启动:

public partial class Form1 : Form { 
    public bool? WorkshopIsPainted; 
    public Form1() { 
        InitializeComponent();
        // 别忘了启动timer,否则Tick事件永远不会触发
        timer4.Start();
    } 
    private void timer4_Tick(object sender, EventArgs e) { 
        // 统一用正确的属性名,不管值是true还是false都赋值
        WorkshopIsPainted = workshop.Painted;
        // 如果不需要timer一直运行,可以在这里添加停止逻辑:timer4.Stop();
    } 
}

额外检查要点

  • 确认workshop对象已经被正确实例化,不是null(否则会抛出空引用异常)。
  • 检查timer4的Interval属性是否设置合理,确保事件能按预期频率触发。

内容的提问来源于stack exchange,提问作者Msorich

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:33:05