FIX: Cannot Edit Form or UserControl When You Host Another UserControl in Same Project (248285)



The information in this article applies to:

  • Microsoft Visual Basic Enterprise Edition for Windows 5.0
  • Microsoft Visual Basic Professional Edition for Windows 5.0

This article was previously published under Q248285

SYMPTOMS

If you try to edit the code for a form or UserControl that is hosting an instance of a UserControl (which is defined within the same project), the project cannot be edited. For example, if you modify a line of code, it reverts to its unmodified state when you move off the line.

If you continually try to edit the form or UserControl after the first try proves unsuccessful, you may receive one of the following error messages:
Compile error: invalid outside procedure

-or-

Error loading 'c:\temp\vb3c6.tmp'. A control could not be loaded due to load error. Continue?
The control instance may lose its control class; that is, the control instance is no longer an instance of a UserControl but an instance of a picture box.

CAUSE

When a UserControl is in the design environment and is hosted on a form or UserControl, the UserControl is running. If the UserControl is defined in the same project as the host, when you edit the host's code, the Visual Basic editor raises the error message when the edit invalidates the procedural layout of the code.

RESOLUTION

There are two ways to work around this problem in Visual Basic 5.0:
  • Develop the control in a separate project than its host. This is the preferred workaround.
  • Comment out the ReadProperties and WriteProperties events in the UserControl before you edit the host.

STATUS

Microsoft has confirmed that this is a bug in the Microsoft products that are listed at the beginning of this article.

This bug was corrected in Visual Basic 6.0.

MORE INFORMATION

Steps to Reproduce Behavior

  1. Create a new Standard EXE project in Visual Basic 5.0. Form1 is created by default.
  2. From the Project menu, add a new User Control to the project.
  3. Select the ReadProperties event in the User Control, and edit the code so that the stub for the function exists. You do not need to add any code.
  4. Close the design windows for the User Control, and add an instance of the control to Form1.
  5. Double-click the control instance to edit one of the event procedures for the control instance.
  6. Add three valid lines of code (such as MsgBox "Hello").
  7. Block comment this event procedure. To do this, add a single quotation mark (') to the beginning of each line. You can also highlight all of the code, and click Comment Block from the Edit toolbar.
Notice that only the first two lines of the procedure are commented out. (You may also receive one of the above-mentioned error messages.) Furthermore, you cannot add or edit any other lines of code; all that you can do is unload Visual Basic. Do not save your project at this stage because you may corrupt it.

This problem may also occur when you edit an Enum declaration in the declarations section of the form.

Modification Type:MajorLast Reviewed:10/20/2003
Keywords:kbBug kbfix KB248285