//
//
-// COMPLETE
-
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Reflection;
+using System.Runtime.InteropServices;
namespace System.Windows.Forms
{
-
+#if NET_2_0
+ [ClassInterface (ClassInterfaceType.AutoDispatch)]
+ [ComVisible (true)]
+#endif
public class CheckedListBox : ListBox
{
private CheckedIndexCollection checked_indices;
}
#region events
+ static object ItemCheckEvent = new object ();
+
+#if NET_2_0
+ [Browsable (true)]
+ [EditorBrowsable (EditorBrowsableState.Always)]
+#else
[Browsable (false)]
[EditorBrowsable (EditorBrowsableState.Never)]
+#endif
public new event EventHandler Click {
add { base.Click += value; }
remove { base.Click -= value; }
remove { base.ValueMemberChanged -= value; }
}
- public event ItemCheckEventHandler ItemCheck;
+ public event ItemCheckEventHandler ItemCheck {
+ add { Events.AddHandler (ItemCheckEvent, value); }
+ remove { Events.RemoveHandler (ItemCheckEvent, value); }
+ }
#endregion Events
#region Public Properties
public override SelectionMode SelectionMode {
get { return base.SelectionMode; }
set {
+ if (!Enum.IsDefined (typeof (SelectionMode), value))
+ throw new InvalidEnumArgumentException ("value", (int) value, typeof (SelectionMode));
+
if (value == SelectionMode.MultiSimple || value == SelectionMode.MultiExtended)
- throw new InvalidEnumArgumentException ("Multi selection modes not supported");
+ throw new ArgumentException ("Multi selection not supported on CheckedListBox");
base.SelectionMode = value;
}
protected virtual void OnItemCheck (ItemCheckEventArgs ice)
{
- if (ItemCheck != null)
- ItemCheck (this, ice);
+ ItemCheckEventHandler eh = (ItemCheckEventHandler)(Events [ItemCheckEvent]);
+ if (eh != null)
+ eh (this, ice);
}
protected override void OnKeyPress (KeyPressEventArgs e)
#endregion Private Methods
- public class ObjectCollection : ListBox.ObjectCollection
+ public new class ObjectCollection : ListBox.ObjectCollection
{
private CheckedListBox owner;
if (check != CheckState.Unchecked)
owner.check_states [item] = check;
if (check == CheckState.Checked)
- owner.OnItemCheck (new ItemCheckEventArgs (Count, check, CheckState.Unchecked));
+ owner.OnItemCheck (new ItemCheckEventArgs (Count-1, check, CheckState.Unchecked));
owner.UpdateCollections ();
- return Count;
+ return Count - 1;
}
}
#endregion Private Methods
}
#if NET_2_0
-
+ [DefaultValue (false)]
public bool UseCompatibleTextRendering {
- get {
- return use_compatible_text_rendering;
- }
-
- set {
- use_compatible_text_rendering = value;
- }
+ get { return use_compatible_text_rendering; }
+ set { use_compatible_text_rendering = value; }
}
#endif