C#实例化控件,控件的属性都提示引发了NullReferenceException异常

C# winform在 InitializeComponent中实例化控件,实例化后,发现控件的属性都提示引发了Object reference not set to an instance of an object异常,
在其它win7电脑上就没有问题
补充:
这个控件有正常new,new之后的对象,发现属性报错
我是在vs中debug看这个控件的属性时发现每个属性都不是正常的值,而是提示报错,
这个控件的父类是System.Windows.Forms.Button

img

问题解析过程:
经过尝试,发现用x86编译的程序,会出现上述问题,用x64编译后执行正常,
但是x86编译的程序,在其它win7电脑上执行正常,所以怀疑是引用的控件库在这个电脑系统上的某个依赖文件缺失或错误,
正在尝试寻找这个错误的依赖文件

InitializeComponent是设计器自动生成的代码,你想实例化控件应该从工具箱里拖控件出来放到窗体里,InitializeComponent里会自动生成对应的代码
不要自己乱改InitializeComponent里的代码
此外,如果你是exe程序运行时报错,检查报错的机器上是不是缺少类库
比如你使用了dev的插件,而对应机器上没有安装dev的运行版,dev的dll也没有拷贝到工程目录里,就会报错

控件实例化后, 先判断是否为null.

你打开的这个cs文件中的内容,都是拖动窗体空间后,自动生成的代码。提示NullReferenceException,可以等原因是窗体中的控件与自动生成的代码不匹配,返回窗体设计器,查找下控件是否存在。

1.先检查一下引用的控件是否缺少依赖的组件
2.查看是否是第三方的控件需要授权lic 文件或dll
3.用原生的试试,如果原生的没问题,可能是引用的第三方的dll 封装有问题

使用depends工具查看一下你的exe程序缺少什么依赖库,与win7上对比一下

目标平台,选择 any CPU, X86 选择一个,生成,
X64选择一个生成 。
我生成 针对不同系统,单独生成

CCWIN这个控件类库是一个皮肤类吧,原则上这种类库应该对X86的支持比较好,其实X86编译成功可以在32和64位平台都可以使用,而64位平台运行的程序不兼容32位X86平台的。所以为了如果保证兼容性,应该尽量使用X86来编译。

但楼主的错很奇怪,反而是64位编译成功,X86失败。怀疑是本身这个控件类库的问题,换一个控件的类库版本试试?

其实VS2019自己的控件就可以做到很好的“UI界面框架”,题主可以试试,看看我这篇详细说:

有没有手动修改或删除了 InitializeComponent里面的设计代码段,如果自己手写添加控件 可能会有些必要属性漏了没赋值导致初始化不成功

上图上代码