9

Quando provo ad aprire in modalità di progettazione di un modulo (VB.NET), in cui ho un UserControl personalizzato, vedo il messaggio da Visual Studio:Visual Studio messaggio Designer

--------------------------- 
Microsoft Visual Studio 
--------------------------- 
The control MyNamespace.MyUserControl has thrown an unhandled exception 
in the designer and has been disabled. 

Exception: 
Cannot access a disposed object. 
Object name: 'SplitterPanel'. 

Stack trace: 
--------------------------- 
OK 
--------------------------- 

E la forma non è visualizzato nel designer. Cosa fare?

+0

Ho lo stesso errore in C# – Zyku

risposta

3

Caricare il progetto con la modalità di debug e inserire un punto di interruzione nella funzione InitializeComponent() per il controllo utente. Potresti avere qualche bug che smaltisce un oggetto chiamato SplitterPanel e poi prova ad accedervi in ​​seguito. Questa inizializzazione viene eseguita quando Visual Studio tenta di eseguire il rendering del controllo, determinando l'errore che si sta verificando.

+0

Grazie, Yaakov. Inserisco un punto di interruzione su InitializeComponent, ma in modalità progettazione non mi fermo su di esso ... il MYUserControl stesso si sta dimostrando valido nella finestra di progettazione. Ma non lascia la forma in cui viene ospitata la strega. – serhio

+0

Ho in UserControl uno SplitContainer, ma qualsiasi elemento denominato SplitterPanel ... – serhio

+0

) correlati: http://connect.microsoft.com/VisualStudio/feedback/details/540882/the-control-control-has-thrown-an -unhandled-exception-in-the-designer-and-has-been-disabled – serhio

2

È necessario cercare nella finestra di progettazione del modulo, per la chiamata del metodo Dispose nel metodo InitializeComponent. Qualcosa del genere avrebbe scritto:

Me.SplitterPanel.Dispose() 

A causa di questo oggetto di chiamata distrugge nel progettista. Quindi non esiste più per mostrarlo e farne uso.

La rimozione di questa linea risolverà il problema.

2

rimuovere l'attributo

<System.Diagnostics.DebuggerStepThrough()> _ 

Da InitializeComponent() all'interno del progettista. Questo ti permetterà di passare attraverso il designer. Per capire esattamente dove viene generata l'eccezione, si può anche rompersi quando un'eccezione CLR viene lanciata dal

menu Debug >>> >>> Eccezioni selezionare la casella "Eccezioni Common Language Runtime", "gettato"

Con questi due passaggi, dovresti essere in grado di rompere dove viene lanciata l'eccezione.

Problemi correlati