2011-11-16 9 views
0

私はデザインタイムサポートを提供しているユーザーコントロールを作成しました。私は適切なプロパティを公開し、必要な子コントロールは、ユーザーコントロールを含む親フォームに正しく保持されています。WinFormsユーザーコントロールデザイン時にイベントをロードし、永続プロパティにアクセス

フォームのロードイベントで、永続化された「MenuItems」プロパティ(下記のコードを参照)から特定の子コントロールを再構築する必要があります。 Visual Studio IDEでフォームを開くたびにLoadイベントが正しく発生します。初めてフォームが開かれたとき、コレクションにはすべての予想される項目が正しく含まれています。ただし、後で同じVisual Studioセッションでフォームを開くと、コレクションは空になります。 Loadイベントは発生しますが、永続化されたコレクションは空です。 Visual Studioを閉じてフォームをもう一度開くと、コレクションにアイテムの予想数が正しく表示されます。

以下は関連するコードです。私は永続化されたコレクションからメニューアイテムを再構築するサードパーティのDevExpress NavBarControlを使用しています。アイテムは、親のフォームに生成されたコード(のMenuItem持続しますコレクションです)、次のとおりです。

public partial class MyUserControl : UserControl 
{ 
    private List<NavBarItem> menuItems = new List<NavBarItem>(15); 

    [Browsable(false), 
     DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] 
    public List<NavBarItem> MenuItems 
    { 
     get 
     { 
      return this.menuItems; 
     } 
    } 

    public MyUserControl() 
    { 
     InitializeComponent(); 
    } 

    private void NavOptionsControl_Load(object sender, EventArgs e) 
    { 
     foreach (NavBarItem item in this.menuItems) 
     { 
      NavBarItemLink link = new NavBarItemLink(item); 
      this.navBarGroup.ItemLinks.Add(item); 
      item.LinkClicked += new NavBarLinkEventHandler(NavBarItem_LinkClicked); 
     } 
    } 
} 
+0

確認のためだけに、フォームを破棄して後で新しいフォームを作成しますか? – user978122

+0

私の質問は、ランタイムではなく、デザイン時についてです。この親フォームにユーザーコントロールが含まれているVisual Studio Designerで親フォームを開く方法について説明しています。 – Elan

答えて

1

を使用すると、レイアウトイベントを試してみましたか?またはおそらく塗装イベント?

+0

あなたの提案後に今すぐ試してみてください。レイアウトイベントが何度も発生します。ペイントは私の場合に一度だけ発射されるように見えます。ありがとう。 – Elan

+0

喜んで助けてください。 –

関連する問題