9

試みは、デザインモードで、私は、カスタムユーザーコントロールを持っているフォーム(VB.NET)を、開くようにすると、私は、Visual Studioからのメッセージを参照してください。Visual Studioのデザイナメッセージ

--------------------------- 
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 
--------------------------- 

を、フォームではありませんデザイナーに表示されます。何をすべきか?

+0

私はC#で同じエラーが発生しました – Zyku

答えて

3

デバッグモードでプロジェクトをロードし、ユーザーコントロールのInitializeComponent()関数にブレークポイントを設定します。 SplitterPanelという名前のオブジェクトを破棄し、その後にアクセスしようとしているバグがあるかもしれません。この初期化は、Visual Studioがコントロールをレンダリングしようとしているときに実行され、表示されているエラーが発生します。

+0

ありがとう、Yaakov。私は、InitializeComponentの上にbreackpointを置くが、私はそれを停止しないデザインモードで... MYUserControl自体がデザイナーで良い表示されています。しかし、それは表示されるためにホストされている魔女のフォームを残していません。 – serhio

+0

私はUserControlにSplitContainerを持っていますが、SplitterPanel ... – serhio

+0

という名前の要素はすべて関連しています:http://connect.microsoft.com/VisualStudio/feedback/details/540882/the-control-control-has-thrown-anデザイナーが使用していない例外が処理されていない – serhio

2

InitializeComponentメソッドのDisposeメソッドの呼び出しのために、あなたのフォームのデザイナーを見なければなりません。このような何かが書かれます:

Me.SplitterPanel.Dispose() 

このため、コール・オブジェクトのデザイナーで破壊します。したがって、それを表示して使用することはもはや存在しません。

この行を削除すると問題が解決されます。

2

デザイナー内)(のInitializeComponentから属性

<System.Diagnostics.DebuggerStepThrough()> _ 

を削除します。これにより、デザイナーの一歩を踏み出すことができます。例外は>>>

「スローさ」ボックス「共通言語ランタイム例外」を、チェック>>> CLR例外が

[デバッグ]メニューによってスローされたときに例外がスローされた場所を正確に把握するために、あなたも破ることができます

これらの2つの手順を実行すると、例外がスローされる場所を解除することができます。