PRB: "Hash Marks" on ActiveX Controls After Run-Time Error
ID: Q161305
|
The information in this article applies to:
-
Microsoft Visual Basic Control Creation and Enterprise Editions for Windows, version 5.0
SYMPTOMS
After receiving an error message, all instances of the ActiveX control
are disabled and drawn with "hash marks."
CAUSE
This behavior occurs after an unhandled error in event code.
RESOLUTION
The conditions listed below must be met to avoid this problem:
- Ensure that the event code never generates a run-time error or that it
handles all errors with an error handler.
- Never use Err.Raise within a UserControl.
STATUS
This behavior is by design.
MORE INFORMATION
Unhandled errors in event procedures are fatal to your control component's
operation and the application using it because there is no procedure on the
call stack to handle the error.
It is safe to raise errors in property procedures and methods, however,
because properties and methods are always invoked by other procedures and
errors you raise can be handled by the user in those procedures.
Steps to Reproduce Behavior
- Create an ActiveX control called "UserCtrl" with no constituent
controls and the following code:
Option Explicit
Private Procedure UserControl_Click()
Err.Raise 999, "UserControl", "Don't Click on Me"
End Sub
Public Sub BackColor(ByVal NewVal As Long)
UserCtrl.BackColor = NewVal
Err.Raise 555, "UserControl", "Don't invoke this method"
End Sub
- Make an OCX.
- Create a new project and add the OCX via the Project|Components menu.
- Add your control and a CommandButton to the form.
- Add the following code to the CommandButton's Click event:
Sub Command1_Click()
On Error Resume Next
UserCtrl1.BackColor 0
End Sub
- Run the form and click the button. Then click your control.
When you click the CommandButton, nothing happens; the error is trapped
and dealt with (ignored in this case).
When you click your control, you see the error message and, when
dismissed, the control is disabled and becomes hashed out.
REFERENCES
Microsoft Visual Basic User's Guide, Chapter 9, Building ActiveX Controls,
Creating Robust Controls.
(c) Microsoft Corporation 1996, All Rights Reserved.
Contributions by Malcolm Stewart, Microsoft Corporation
Additional query words:
OCX component constituent hash hatch
Keywords : kbprg kbVBp500 kbGrpVBDB VBKBAX VBKBError
Version : 5.0
Platform : WINDOWS
Issue type : kbprb