Artikel-ID: 818220 - Geändert am: Montag, 3. Dezember 2007 - Version: 3.11

Das Steuerelement für Benutzer ist nicht im Formular-Designer sichtbar, wenn Sie ein vorhandenes Projekt öffnen

SystemtippDieser Artikel bezieht sich auf ein anderes Betriebssystem als das von Ihnen verwendete. Für Sie möglicherweise nicht relevante Artikelinhalte wurden deaktiviert.

Auf dieser Seite

Alles erweitern | Alles schließen

Problembeschreibung

Wenn Sie eine vorhandene Windows-Anwendung in Visual Studio .NET oder Visual Studio 2005 erneut öffnen, möglicherweise ein vorher sichtbar Benutzer ActiveX-Steuerelement im Windows Form-Designer nicht sichtbar. Auch wenn Sie versuchen, das Projekt zu kompilieren, erhalten ähnlich der folgenden Fehler Sie:
Typ 'AxProject1.AxTestControl' ist nicht definiert.
Die referenzierte Komponente 'AxProject1' konnte nicht gefunden werden. Ein .NET-Assemblywrapper für die Bibliothek abhängigen Typ 'Projekt1' konnte nicht gefunden.

Ursache

Wenn Sie ein Visual Studio .NET oder Visual Studio 2005-Projekt ein Steuerelement für Benutzer hinzugefügt haben, startet Visual Studio .NET oder Visual Studio 2005 intern das Windows Forms ActiveX Control Importer-Tool (Aximp.exe). Aximp.exe konvertiert die Bibliothek Typ von ActiveX-Steuerelement, und es generiert die folgenden zwei Dateien:
  • Ein common Language Runtime Proxy für COM-Typen.
  • Ein Windows Forms-Proxy für das Steuerelement für Benutzer.
Diese zwei Proxy-Dateien haben Informationen über das vorhandene Benutzer-Steuerelement.

Wenn Sie das vorhandene ActiveX-Benutzersteuerelement, wie z. B. ein Ereignis, Methode oder -Eigenschaft, einen öffentlichen Member hinzufügen, und anschließend das Steuerelement für Benutzer neu kompilieren, werden eine oder mehrere öffentliche Member der Schnittstelle der das Steuerelement für Benutzer hinzugefügt. Die common Language Runtime Proxydatei ist jedoch nicht mit diesen neuen Informationen aktualisiert. Daher das ActiveX-Benutzersteuerelement Windows Form-Designer nicht ordnungsgemäß generiert wird, die entsprechenden Windows Forms-Proxy nicht ist aktualisiert, und im Abschnitt "Problembeschreibung" dieses Artikels beschriebenen Verhalten.

Hinweis: Sie können im Dialogfeld Eigenschaften des Projekts klicken Sie auf die Registerkarte Komponenten und dann die Option Binär-Kompatibilität auswählen, bevor Sie das vorhandene ActiveX-Steuerelement in Microsoft Visual Basic 6.0 neu kompilieren. Obwohl der common Language Runtime Proxy aktualisiert wird, wird in diesem Fall der Windows Forms-Proxy nicht aktualisiert. Dies führt dieselben Symptome.

Abhilfe

Um dieses Problem zu umgehen, entfernen Sie die vorhandenen Verweise auf das Steuerelement für Benutzer und fügen Sie die aktualisierten Verweise erneut. Tun Sie dies, indem Sie eine der folgenden Methoden.

Methode 1

  1. Klicken Sie in Projektmappen-Explorer unter verweisen mit der rechten Maustaste auf AxProject1 und klicken Sie dann auf Entfernen .
  2. Klicken Sie unter References klicken Sie mit der rechten Maustaste auf Projekt1 , und dann auf Entfernen .
  3. Doppelklicken Sie in der Toolbox auf Project1.TestControl So fügen Sie dem Formular das geänderte Benutzer-Steuerelement hinzu.

    Beachten Sie, das Windows Form-Designer und die Verweise auf AxProject1 und Projekt1 Benutzer ActiveX-Steuerelement werden für UserControlDemo unter Verweise angezeigt.
  4. Klicken Sie im Menü Erstellen auf Erstellen Projektmappen .

    Sie erhalten keine Fehler.
Hinweis: Wenn Sie diese Problemumgehung verwenden, das geänderte Benutzer-Steuerelement ist Ihr Formular als AxTestControl2 hinzugefügt, und das Formular noch einige Code, der auf AxTestControl1 bezieht. Die folgende Anweisung ist z. B. noch vorhanden, obwohl AxTestControl1 nicht mehr in Ihrem Formular ist:

Beispielcode für Visual Basic .NET
Friend WithEvents AxTestControl1 As AxProject1.AxTestControl
Visual c# .NET Beispielcode
private AxProject1.AxTestControl axTestControl1;
Wenn Sie AxTestControl1 an anderer Stelle im Code verwendet und nicht explizit eine Instanz eines Objekts AxProject1.AxTestControl erstellen, erhalten Sie möglicherweise eine
'NullReferenceException'
Fehler.

Wenn Sie mehrere Formulare mit einer Instanz das Steuerelement für die Benutzer haben, müssen Sie darüber hinaus die vorherigen Schritte für jedes Formular wiederholen.

Methode 2

  1. Klicken Sie in Projektmappen-Explorer unter verweisen mit der rechten Maustaste auf AxProject1 und klicken Sie dann auf Entfernen .
  2. Klicken Sie unter References klicken Sie mit der rechten Maustaste auf Projekt1 , und dann auf Entfernen .
  3. Öffnen Sie die Visual Studio .NET oder Visual Studio 2005-Eingabeaufforderung, und ändern Sie den Verzeichnispfad in das Verzeichnis Bin des UserControlDemo .
  4. Geben Sie den folgenden Befehl ein, und drücken Sie dann die EINGABETASTE zum Ausführen von Aximp.exe explizit einen common Language Runtime Proxy und ein Windows Forms-Proxy zu generieren:

    Aximp "<FilePath > \Project1.ocx "/out:AxInterop.Project1.dll

    AxInterop.Project1.dll und Project1.dll werden im Binverzeichnis generiert.

    Hinweis: Ersetzen Sie FilePath durch den Pfad des Verzeichnisses, das Project1.ocx enthält.
  5. Wechseln Sie zu Visual Studio .NET oder Visual Studio 2005. Klicken Sie im Menü Projekt auf Verweis hinzufügen .
  6. Klicken Sie im Dialogfeld Verweis hinzufügen auf Durchsuchen .
  7. Suchen Sie AxInterop.Project1.dll und Project1.dll, und wählen Sie diese.
  8. Klicken Sie auf Öffnen , und klicken Sie auf OK , um diese dem Projekt Verweise hinzufügen.
  9. Schließen Sie und öffnen Sie den Windows-Formulardesigner.

    Beachten Sie das geänderte Benutzer-Steuerelement in Windows Form Designer.

    Hinweis: Im Gegensatz zu in der vorherigen Problemumgehung das geänderte Benutzer-Steuerelement noch AxTestControl1 heißt. Daher ist keine unnötigen Code.
  10. Klicken Sie im Menü Erstellen auf Erstellen Projektmappen .

    Sie erhalten keine Fehler.
Hinweis: Diese Schritte basieren auf dem Beispiel aus der "Weitere Informationen" Abschnitt. Daher können die Entitäten in dieser Aufgaben erwähnten von Entitäten in Ihrem Projekt je nach Implementierung unterscheiden.

Status

Es handelt sich hierbei um ein beabsichtigtes Verhalten.

Weitere Informationen

Schritte zum Reproduzieren des Verhaltens

  1. Öffnen Sie Visual Basic 6.0 und erstellen Sie ein ActiveX-Steuerelement-Projekt.
  2. Klicken Sie im Eigenschaftenfenster ändern Sie Name in TestControl .
  3. Menü Ansicht klicken Sie auf Code und fügen Sie dann den folgenden Code hinzu:
    Public Sub Method1()
       MsgBox ("Method 1")
    End Sub
  4. Im Menü Datei klicken Sie auf Project1.ocx erstellen und dann auf OK im Dialogfeld Projekt erstellen , die angezeigt wird.
  5. Öffnen Sie Visual Studio .NET oder Visual Studio 2005. Erstellen Sie eine Windows-Anwendung namens UserControlDemo mit Visual Basic .NET, Visual Basic 2005 oder Visual c# .NET.
  6. Klicken Sie in Visual Studio .NET 2003 auf Software Toolboxelemente im Menü Extras .

    Klicken Sie in Visual Studio .NET 2002 auf Anpassen Toolbox im Menü Extras .


    Klicken Sie in Visual Studio.2005 auf Wählen Toolboxelemente im Menü Extras .
  7. Klicken Sie auf die Registerkarte COM-Komponenten , und klicken Sie dann auf Durchsuchen .
  8. Suchen Sie Project1.ocx (erstellt in Schritt 4), und wählen Sie es.
  9. Klicken Sie auf Öffnen , und klicken Sie auf OK , um die Project1.TestControl der Toolbox hinzufügen.
  10. Doppelklicken Sie in der Toolbox auf Project1.TestControl AxTestControl1 zu dem Formular hinzugefügt.

    Die Verweise auf AxProject1 und Projekt1 werden automatisch unter Verweise für UserControlDemo angezeigt.
  11. Klicken Sie im Menü Erstellen auf Erstellen Projektmappen .
  12. Speichern Sie das Projekt, und beenden Sie Visual Studio .NET oder Visual Studio 2005.
  13. Wechseln Sie zu Visual Basic 6.0, und fügen Sie ein öffentliches Ereignis, Methode oder Eigenschaft zu TestControl . Hängen Sie den folgenden Code z. B. an TestControl :
    Public Sub Method2()
       MsgBox ("Method 2")
    End Sub
  14. Klicken Sie im Projekt auf Eigenschaften von Projekt1 .
  15. In Project1 - Eigenschaften im daraufhin angezeigten Dialogfeld, klicken Sie auf Komponente .
  16. Klicken Sie unter Versionskompatibilität auf Binär-Kompatibilität auf und klicken Sie dann auf OK .

    Hinweis: Schritt 14 bis Schritt 16 beschrieben, wie die Option Binär-Kompatibilität vor Neukompilierung das Steuerelement für die Benutzer auswählen.
  17. Klicken Sie im Menü Datei auf als Project1.ocx .
  18. Klicken Sie auf Ja , wenn Sie aufgefordert werden, um die vorhandene Datei zu ersetzen.
  19. Öffnen Sie Visual Studio .NET oder Visual Studio 2005 und UserControlDemo .

    Beachten Sie, dass TestControl1 nicht in den Windows Form-Designer sichtbar ist.
  20. Klicken Sie im Menü Erstellen auf Erstellen Projektmappen .

    Die Fehlermeldungen in "Problembeschreibung" genannten Abschnitt dieses Artikels.

Informationsquellen

Weitere Informationen finden Sie die folgende KB-Artikelnummer:
316171  (http://support.microsoft.com/kb/316171/EN-US/ )
Weitere Informationen finden Sie den folgenden MSDN-Websites:
Microsoft ActiveX Controls Overview
http://msdn2.microsoft.com/en-us/library/ms968501.aspx (http://msdn2.microsoft.com/en-us/library/ms968501.aspx)
ActiveX-Steuerelementimporter für Windows-Formulare (Aximp.exe)
http://msdn2.microsoft.com/en-us/library/8ccdh774(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/8ccdh774(vs.71).aspx)
Runtime Callable Wrapper
http://msdn2.microsoft.com/en-us/library/8bwh56xe(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/8bwh56xe(vs.71).aspx)
Binär Änderungen an der-Kompatibilität in Visual Basic
http://msdn2.microsoft.com/en-us/library/a6xdzb3y(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/a6xdzb3y(vs.71).aspx)


Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.0
  • Microsoft Visual Studio .NET 2003 Academic Edition
  • Microsoft Visual Studio .NET 2003 Enterprise Architect
  • Microsoft Visual Studio .NET 2003 Enterprise Developer
  • Microsoft Visual Studio .NET 2003 Professional Edition
  • Microsoft Visual Studio .NET 2002 Academic Edition
  • Microsoft Visual Studio .NET 2002 Enterprise Architect
  • Microsoft Visual Studio .NET 2002 Enterprise Developer
  • Microsoft Visual Studio .NET 2002 Professional Edition
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft .NET Framework 2.0
Keywords: 
kbmt kbvs2005swept kbvs2005applies kbideproject kbide kbcomctrls kbctrlcreate kbctrl kbcontrol kbcominterop kbprb KB818220 KbMtde
Maschinell übersetzter ArtikelMaschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 818220  (http://support.microsoft.com/kb/818220/en-us/ )
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.