首页 新闻 会员 周边

C# winform 程序,生成后,在别的电脑上无法启动

0
悬赏园豆:30 [已解决问题] 解决于 2013-10-23 20:13

开发机子: winxp

使用机子:win7

提示这个错误,往高手解答???

sanglei的主页 sanglei | 初学一级 | 园豆:143
提问于:2013-10-22 15:35
< >
分享
最佳答案
0

这个蛮奇怪的,最好是打印日志,看看到底是那个对象为null。

收获园豆:20
幻天芒 | 高人七级 |园豆:37175 | 2013-10-22 16:20

能说一下具体怎么操作吗?

sanglei | 园豆:143 (初学一级) | 2013-10-22 20:18

@sanglei: 有条件的话,直接在Win7上调试。不行的话,就在使用对象的时候,判断下到底哪个为空,然后记录一条日志记录(写文本即可)。

这个错误,看起来是timer的问题,你多关注下这个对象呗。

幻天芒 | 园豆:37175 (高人七级) | 2013-10-22 20:20

@幻天芒: 多谢多谢,我再试试看

sanglei | 园豆:143 (初学一级) | 2013-10-22 20:25

@sanglei: 加油,祝你好运!

幻天芒 | 园豆:37175 (高人七级) | 2013-10-22 20:27
其他回答(6)
0

Object reference not set to an instance of an object.

这个错误是最典型的NET错误了。通常发生的情总是类似以下代码

dim myObject as SomeClass (注意,此时myobject是Nothing)

...

...

myOject.name="test" (这句编译是可以过的,但是运行到这儿就出错了)

至于你说的在WINXP下可以,而在WIN7下出错,建议你将你的开发环境在WIN7下安装一个,再调试运行代码,

单步执行是利用断点,你会发现有某个对象,你在使用他的属性或是方法之前,这个对象是空的。

收获园豆:1
爱编程的大叔 | 园豆:30839 (高人七级) | 2013-10-22 16:09

谢谢你的解答,也就是说,保证在使用前,对象要确保已经实例化。?是不是这个意思?

至于定时器,是不是尽量不要用添加控件的方式开发?

直接用timer tr=new timer();?

支持(0) 反对(0) sanglei | 园豆:143 (初学一级) | 2013-10-22 16:15

@sanglei:  NET中有三个不同的计时器。简单的应用,不考虑性能方式等问题,你现在可以不管这三个不同的计时器的差别。

本质上,用添加组件的方式或是使用代码,是没有区别的。

注意,可视的称为控件(Control),不可视的称为组件(Component)。

你查看designer这个文件,就会发现你拖进去的组件的代码,

你会发现里面有一句 time tr= new timer();这样的初始化语句的。

我看了你的其他提问,好象你经常只定义对象,而不进行初始化。

支持(0) 反对(0) 爱编程的大叔 | 园豆:30839 (高人七级) | 2013-10-23 12:27
0

典型的.netframework不是下载的。

从官方下载 framework然后再安装,

收获园豆:1
硬盘很大 | 园豆:16 (初学一级) | 2013-10-22 17:19

这个也有区别啊

 

支持(0) 反对(0) sanglei | 园豆:143 (初学一级) | 2013-10-22 20:18
0

官方下载正确的.NET FRAMWORK版本

收获园豆:1
喜洋洋2012 | 园豆:195 (初学一级) | 2013-10-23 10:36
0

1. 保证.netframework相应版本和支持组件安装正确。

2. 是否需要管理员权限运行,win7中有UAC。

实在不行了也只有写日记或装一个VS调试了

收获园豆:1
空明流光 | 园豆:106 (初学一级) | 2013-10-23 13:02
0

你这里肯定有对象没有实例化  即值为null

收获园豆:4
Moulton | 园豆:206 (菜鸟二级) | 2013-10-23 13:13
0

貌似和time1本身没有关系,那个一看就是拖到界面上的控件。

是time1_Tick函数体内部有引用没有实例化。

你把time1_Tick函数子内部所有代码注释了试试就知道了。

收获园豆:1
waiter | 园豆:1000 (小虾三级) | 2013-10-23 13:25
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册