PRB: Run-Time Error '373' or '-2147417848(80010108)' (192129)



The information in this article applies to:

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

This article was previously published under Q192129

SYMPTOMS

When passing a form to a public procedure of a compiled UserControl, you receive one of the following error messages:
Run-time error '373': This interaction between compiled and design environment components is not supported.

-or-

Run-time error '-2147417848(80010108)': Method 'xxx' failed

The first error is received if running a Visual Basic 6.0 project, the second applies to Visual Basic 5.0 projects.

CAUSE

Forms and controls are private objects to the Visual Basic project that created them. Therefore, they should not be passed as parameters to procedures outside the project. Although you can work around this error message by adding the UserControl project and the test client project to the same project group, passing forms and controls outside the project that originally created them may have unpredictable side effects and is strongly discouraged.

RESOLUTION

There are two possible resolutions to avoid this behavior:
  • Do not pass forms or controls outside a project.
  • Add the UserControl and the client projects to the same project group.

STATUS

This behavior is by design.

MORE INFORMATION

Steps to Reproduce Behavior

Create the UserControl:
  1. Create a new UserControl project in Visual Basic, and name it TestCtl.
  2. Add a form to the project.
  3. Add the following code to the UserControl's code module:
          Public Sub ShowForm(frm As Object)
             Form1.Show vbModal, frm
    
          End Sub
    						
  4. Compile the project and create TestCtl.ocx.
Create the Test Client Project:
  1. Create a Standard EXE project in Visual Basic. Form1 is created by default.
  2. Add TestCtl.ocx to the ToolBox by selecting Components from the Tools menu and selecting the TestCtl control.
  3. Add a TestCtl to Form1.
  4. Add a CommandButton (Command1) to Form1.
  5. Add the following code to Form1's code module:
          Private Sub Command1_Click()
             UserControl11.ShowForm Me
          End Sub
    						
  6. Press the F5 key to run the project. When you click Command1, one of the following messages is received:
    Run-time error '373': "This interaction between compiled and design environment components is not supported." for a VB6 project.

    -or-

    Run-time error '-2147417848(80010108)': "Method 'xxx' failed" for a VB5 project.

Modification Type:MajorLast Reviewed:5/13/2003
Keywords:kbprb KB192129