using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace Nuclex.Windows.Forms {
/// Collection of controls embedded in another control
public class EmbeddedControlCollection : Control.ControlCollection {
#region class ControlEventArgs
/// Arguments class for events that need to pass a control
public class ControlEventArgs : EventArgs {
/// Initializes a new event arguments provider
/// Control to be supplied to the event handler
public ControlEventArgs(Control control) {
this.control = control;
}
/// Obtains the control the event arguments are carrying
public Control Control { get { return this.control; } }
/// Control that's passed to the event handler
private Control control;
}
#endregion // class ControlEventArgs
/// Raised when a control has been added to the collection
public event EventHandler ControlAdded;
/// Raised when a control is removed from the collection
public event EventHandler ControlRemoved;
/// Initializes a new instance of the EmbeddedControlCollection class
///
/// A System.Windows.Forms.Control representing the control
/// that owns the control collection
///
EmbeddedControlCollection(Control owner) : base(owner) { }
/// Adds the specified control to the control collection
///
/// The System.Windows.Forms.Control to add to the control collection
///
public override void Add(Control value) {
base.Add(value);
OnControlAdded(value);
}
/// Removes the specified control from the control collection
///
/// The System.Windows.Forms.Control to remove from the EmbeddedControlCollection
///
public override void Remove(Control value) {
base.Remove(value);
OnControlRemoved(value);
}
/*
/// Adds an array of control objects to the collection
///
/// An array of System.Windows.Forms.Control objects to add to the collection
///
public override void AddRange(Control[] controls) {
base.AddRange(controls);
}
/// Removes all controls from the collection
public override void Clear() {
base.Clear();
}
/// Removes the child control with the specified key
/// The name of the child control to remove
public override void RemoveByKey(string key) {
base.RemoveByKey(key);
}
*/
///
/// Called when a control has been added to the collection,
/// fires the ControlAdded event
///
/// Control that has been added to the collection
protected virtual void OnControlAdded(Control control) {
if(ControlAdded != null)
ControlAdded(this, new ControlEventArgs(control));
}
///
/// Called when a control has been removed to the collection,
/// fires the ControlRemoved event
///
/// Control that has been removed from the collection
protected virtual void OnControlRemoved(Control control) {
if(ControlRemoved != null)
ControlRemoved(this, new ControlEventArgs(control));
}
}
} // namespace Nuclex.Windows.Forms