Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb6 无法设置richtextbox控件的属性_Vb6_Richtextbox - Fatal编程技术网

Vb6 无法设置richtextbox控件的属性

Vb6 无法设置richtextbox控件的属性,vb6,richtextbox,Vb6,Richtextbox,在一台计算机上'A'(win vista 32位)如果我在调试模式下运行程序,所有richtextbox控件都会抛出“无法设置属性”错误。 我可以继续构建exe(没有错误)和完整的应用程序OK 但是,当我在这台计算机上或在计算机'B'(win xp)上安装并运行应用程序时,两者都会出现相同的问题 但是,如果我在计算机“B”上以调试模式运行完全相同的代码,则不会出现错误。 如果我在计算机“B”上构建并安装应用程序,它就可以正常工作。如果我在计算机“A”上安装此应用程序,它也可以正常工作。 将应用程

在一台计算机上
'A'
(win vista 32位)如果我在调试模式下运行程序,所有richtextbox控件都会抛出
“无法设置属性”
错误。 我可以继续构建
exe
(没有错误)和完整的应用程序OK 但是,当我在这台计算机上或在计算机
'B'
(win xp)上安装并运行应用程序时,两者都会出现相同的问题

但是,如果我在计算机“
B
”上以调试模式运行完全相同的代码,则不会出现错误。 如果我在计算机“
B
”上构建并安装应用程序,它就可以正常工作。如果我在计算机“
A
”上安装此应用程序,它也可以正常工作。 将应用程序放在一起分发时,两台计算机都使用相同的
richtx32.ocx
(它与代码一样,是从同一存储库中签出的)

如果我在计算机“
A
”上查看以前的代码副本(以前的行为正常),它们现在也会出现与最新版本代码相同的问题


我一点也不知道发生了什么,请帮帮我

我看到在富文本控件版本中无法设置对
属性的多个引用
消息正在解析,也就是说,无法设置另一个
属性

首先,确保至少安装了SP5;我会选择SP6

作为参考,我的Microsoft富文本框控件6.0(SP6)位于
C:\Windows\System32\RICHTX32.OCX
,版本为6.1.97.82

我知道你说过两台机器都安装了相同的控件副本;为了完整性起见,您可能希望在安装后再次检查新控件是否已注册

编辑:

我导出了
HKEY\U CLASSES\U ROOT\CLSID\{3B7C8860-D78F-101B-B9B5-04021C009402}
reg键:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\CLSID\{3B7C8860-D78F-101B-B9B5-04021C009402}]
@="Microsoft Rich Textbox Control 6.0 (SP6)"

[HKEY_CLASSES_ROOT\CLSID\{3B7C8860-D78F-101B-B9B5-04021C009402}\Control]

[HKEY_CLASSES_ROOT\CLSID\{3B7C8860-D78F-101B-B9B5-04021C009402}\Implemented Categories]

[HKEY_CLASSES_ROOT\CLSID\{3B7C8860-D78F-101B-B9B5-04021C009402}\Implemented Categories\{0DE86A52-2BAA-11CF-A229-00AA003D7352}]

[HKEY_CLASSES_ROOT\CLSID\{3B7C8860-D78F-101B-B9B5-04021C009402}\Implemented Categories\{0DE86A53-2BAA-11CF-A229-00AA003D7352}]

[HKEY_CLASSES_ROOT\CLSID\{3B7C8860-D78F-101B-B9B5-04021C009402}\Implemented Categories\{0DE86A57-2BAA-11CF-A229-00AA003D7352}]

[HKEY_CLASSES_ROOT\CLSID\{3B7C8860-D78F-101B-B9B5-04021C009402}\Implemented Categories\{40FC6ED4-2438-11CF-A3DB-080036F12502}]

[HKEY_CLASSES_ROOT\CLSID\{3B7C8860-D78F-101B-B9B5-04021C009402}\Implemented Categories\{40FC6ED5-2438-11CF-A3DB-080036F12502}]

[HKEY_CLASSES_ROOT\CLSID\{3B7C8860-D78F-101B-B9B5-04021C009402}\Implemented Categories\{7DD95802-9882-11CF-9FA9-00AA006C42C4}]

[HKEY_CLASSES_ROOT\CLSID\{3B7C8860-D78F-101B-B9B5-04021C009402}\InprocServer32]
@="C:\\Windows\\system32\\RICHTX32.OCX"
"ThreadingModel"="Apartment"

[HKEY_CLASSES_ROOT\CLSID\{3B7C8860-D78F-101B-B9B5-04021C009402}\MiscStatus]
@="0"

[HKEY_CLASSES_ROOT\CLSID\{3B7C8860-D78F-101B-B9B5-04021C009402}\MiscStatus\1]
@="131473"

[HKEY_CLASSES_ROOT\CLSID\{3B7C8860-D78F-101B-B9B5-04021C009402}\ProgID]
@="RICHTEXT.RichtextCtrl.1"

[HKEY_CLASSES_ROOT\CLSID\{3B7C8860-D78F-101B-B9B5-04021C009402}\Programmable]

[HKEY_CLASSES_ROOT\CLSID\{3B7C8860-D78F-101B-B9B5-04021C009402}\ToolboxBitmap32]
@="C:\\Windows\\system32\\RICHTX32.OCX, 1"

[HKEY_CLASSES_ROOT\CLSID\{3B7C8860-D78F-101B-B9B5-04021C009402}\TypeLib]
@="{3B7C8863-D78F-101B-B9B5-04021C009402}"

[HKEY_CLASSES_ROOT\CLSID\{3B7C8860-D78F-101B-B9B5-04021C009402}\Version]
@="1.2"

[HKEY_CLASSES_ROOT\CLSID\{3B7C8860-D78F-101B-B9B5-04021C009402}\VersionIndependentProgID]
@="RICHTEXT.RichtextCtrl"

system32目录中的一个错误richtx32.oca文件似乎是导致此问题的原因

.oca文件的作用:

框架提供了控件的一些属性 还有一些是由控件本身控制的。以编程方式,从 框架和控件都显示为控件的属性

为了显示这些属性,Visual Basic将创建 控件加载到工具箱时的扩展类型库。 因为读取控件的类型库并创建 扩展类型库非常耗时,Visual Basic会缓存 将扩展类型库信息保存到OCA文件中

如果删除Visual Basic识别的控件的OCA文件, 加载项目时,Visual Basic将重新创建.OCA文件 需要控制。这种娱乐过程伴随着时间而来 惩罚

因此,存在一个坏的.oca文件似乎意味着IDE和编译的.exe中的控件属性都将受到影响。
解决方案是删除system32文件夹中的.oca文件,然后再次加载项目。

Hi Lynn我还在这两台机器上运行vb6 SP6,system32文件夹中的richtx32.ocx版本与您的相同。为了使事情尽可能少,我还创建了一个非常简单的项目,其中有一个控件、一个richtextbox控件和一行代码。这行代码的形式为加载事件,并且是richtextbox1.text=“!”。如果我在xp机器的IDE中运行它,我在那里生成的exe可以在两台机器上运行。如果我在vista的IDE中运行它,则会出现“无法设置属性”错误,并且我在那里生成的exe在两台机器上都有此运行时错误。奇怪你能确认
HKEY\U CLASSES\U ROOT\CLSID\{3B7C8860-D78F-101B-B9B5-04021C009402}\InprocServer32
指向控件的6.1.97.82版本吗?我这里有3个条目,引用的RICHTX32.OCX是6.1.97.82,我不知道其他两个条目是关于Name的:(默认)类型:REG_SZ数据:C:\Windows\system32\RICHTX32.OCX名称:InprocServer32类型:REG_MULTI_SZ数据:4)tks6m$?YYV+r,8PxQReaders>wm,0bulsi=dmPn!6.{HhL Name:ThreadingModel Type:REG_SZ data:ApartmentI编辑了我的帖子,其中包含了我转储的注册表项,供您进行比较。另外,可能值得您花时间注销OCX并重新注册。谢谢Lynn,我注册并注销了它,但问题仍然是一样的。因为我在查看时看到有人提到richtx32.oca看到编译后的代码(非常简单的程序),我不知道这是否与此有关vb需要这些.oca文件,但如果你删除它们,它们将被重新创建。我没有删除它,而是重命名了该文件。然后我再次加载了该项目,它运行正常。因此,它似乎是一个坏的.oca文件。非常感谢,找到它的底部真是太好了!@Lynn Crumbling,谢谢,我原以为是ocx,但多亏了你的输入我们基本上已经消除了这一点,所以只是修补一下,这让我看到了oca。当然,我不知道它是如何被破坏的:)