2017-02-14 4 views
0

私はC#WinFormsを使用しています。TabでUserControlを廃棄するときのNullReferenceException

AGaugeというユーザーコントロールを使用しています。 http://www.codearteng.com/2012/08/agauge-winforms-gauge-control.html デザインビューのいずれかのタブページにコントロールを追加しました。

私はコントロールが含まれているタブページを開かずにウィンドウを閉じた場合は、その後、私はとNullReferenceExceptionを取得する(とNullReferenceExceptionがAGauge.dllで発生した - オブジェクト参照オブジェクトのインスタンスに設定されていない)

もし私がタブページを開いてウィンドウを閉じると、すべて正常に動作します。 (廃棄)

をbase.Disposeを実行するときに、私はAGauge.dllのコードに任意のビューを持っていないので、例外のDispose()関数の中で起こる

、私は何をすべきかわかりませんよ。タブページを開いたときに実行時にコントロールを作成することはできますが、それは理想的ではありません。

答えて

0

タブコントロールのSelected()関数でユーザーコントロールを作成することで問題を解決しました。

private void tb_Panel_Selected(object sender, TabControlEventArgs e) 
{ 
    if (myUserControl == null) 
    { 
     this.myUserControl = new System.Windows.Forms.AGauge(); 
     ... 
     ... 
     this.Panel.Controls.Add(this.myUserControl) 
    } 
}