2016-08-26 4 views
0

ユーザーコントロールの公開リストを含むPostboxというユーザーコントロールを作成しました。C#リストにオブジェクトを追加しているときに何かする

using System; 
using System.Collections.Generic; 
using System.Collections; 
using System.ComponentModel; 
using System.Drawing; 
using System.Data; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace DocEngineManager 
{ 
    public partial class PostBox : UserControl 
    { 
     public PostBox() 
     { 
      InitializeComponent(); 
     } 

     public List<PostBoxPost> Posts = new List<PostBoxPost>(); 

    } 
} 

PostBoxPostsがリストに含まれているユーザーコントロールのタイプです:

は、ここに私のコードです。

PostBoxPostを独自のアプリケーションのPostsリストに追加すると、追加された内容を知っている私のUserControlのクラス内でイベントを発生させたいと思います。

+2

あなたはより簡単に達成しようとしていることを説明する必要があります。 – Aybe

+0

'Post 012 'がコントロールであるため、' List 'は役に立たないようです。親の 'Controls'コレクションにコントロールを追加して有用にする必要があります。 * 1)*あなたの目標は何ですか? * 2)*ランタイムサポートのみが必要なの?それとも、デザインタイムのサポートが必要なのでしょうか? –

+0

私は設計時間と実行時間のサポートが必要です。以下の答えはまだこれまでに役立っていません。コントロールが追加されたとき、または追加された直後に編集できるように、コントロールが追加されたときとコントロールが追加されたときを知る必要があります。 –

答えて

4

シンプルリストはイベントを公開しません。ObservableCollectionのようなものが役立ちますか?

public partial class PostBox : UserControl 
{ 
    public ObservableCollection<PostBoxPost> Posts = new ObservableCollection<PostBoxPost>(); 

    public PostBox() 
    { 
     InitializeComponent(); 

     Posts.CollectionChanged += OnPostsCollectionChanged; 
    } 

    private void OnPostsCollectionChanged(object sender, NotifyCollectionChangedEventArgs e) 
    { 
     if (e.NewItems != null && e.NewItems.Count != 0) 
     { 
      foreach (PostBoxPost postBoxPost in e.NewItems) 
      { 
       // Do custom work here? 
      } 
     } 
    } 
} 
+0

'ObserveableCollection'はちょっとWPFに頼っていますが、' BindingList'はWinforms版のほうが多いです。 –

+0

この方法は私のために働いた。コレクションの追加項目が変更されたことを確認し、Posts.Last()。Parent = true;を入力してPostBoxをその親にしました。 –

関連する問題