0

すべて、シングルトンパターンを使用して呼び出されるカスタムユーザーコントロールがあります。このコントロールは表示または非表示にでき、UIを更新します(コントロールの表示/非表示オプションを提供するため)。コントロールコンストラクターでイベントハンドラーを設定します。

this.VisibleChanged += new EventHandler(ResultsControl_VisibleChanged);

イベントハンドラは

void ResultsControl_VisibleChanged(object sender, EventArgs e)
{
    // Get reference to Show/Hide button.
    var showHideResults = ((SqlEditorForm)this.ParentForm).ShowHideResultsButton;
    if (instance != null)
        showHideResults.Enabled = true;

    // Change the status.
    showHideResults.Text = this.Visible ? 
        "&Hide Query Results" : 
        "&Show Query Results";
    showHideResults.Image = this.Visible ?
        Properties.Resources.HideResultsVS201224 :
        Properties.Resources.ShowResultsVS201224;
}

問題は、への参照を取得する方法にありShowHideResultsButtonます。デザイナーから次のエラーがスローされます...

DesignerError

私はここで何が間違っているのですか?

御時間ありがとうございます。


編集。私はこれを動かすことによってこれを解決したようです

this.VisibleChanged += new EventHandler(ResultsControl_VisibleChanged);

コンストラクターからコントロールのLoadイベントまで。したがって、問題は次のようになります。これは有効な修正ですか?

4

1 に答える 1

1

あなたがあなたをデザインしている現在、あなたはUserControlへの参照を持っていませんSqlEditorForm。デザイナーまたはコードのいずれかを使用した場合にのみ、ParentFormプロパティになります。それまでは、IDEはそれがForm型であることしか認識していません。内にイベントハンドラーを実装してみませんか?SqlEditorFormResultsControlSqlEditorFormResultsControl_VisibleChangedSqlEditorForm

于 2012-11-09T11:17:53.463 に答える