From 7fdd324ef023b04ce9068fb77f78fa6a2a10f9cf Mon Sep 17 00:00:00 2001 From: RKrom Date: Mon, 3 Nov 2014 08:45:09 +0100 Subject: [PATCH] Improved the readability of the ToolStripMenuSelectList, no longer using public fields but Properties and now it uses the right types. --- Greenshot/Forms/ToolStripMenuSelectList.cs | 48 ++++++++++++++-------- 1 file changed, 32 insertions(+), 16 deletions(-) diff --git a/Greenshot/Forms/ToolStripMenuSelectList.cs b/Greenshot/Forms/ToolStripMenuSelectList.cs index 0027925c1..197253f57 100644 --- a/Greenshot/Forms/ToolStripMenuSelectList.cs +++ b/Greenshot/Forms/ToolStripMenuSelectList.cs @@ -18,6 +18,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ + using System; using System.Collections; using System.Collections.Generic; @@ -26,7 +27,7 @@ using System.Windows.Forms; namespace Greenshot.Forms { /// - /// Description of ToolStripMenuSelectList. + /// the ToolStripMenuSelectList makes it possible to have a single or multi-check menu /// public class ToolStripMenuSelectList : ToolStripMenuItem { private bool multiCheckAllowed = false; @@ -35,26 +36,28 @@ namespace Greenshot.Forms { /// Occurs when one of the list's child element's Checked state changes. /// public new event EventHandler CheckedChanged; - public Object Identifier; - - - public ToolStripMenuSelectList(Object identifier, bool allowMultiCheck) { + public object Identifier { + get; + private set; + } + + public ToolStripMenuSelectList(object identifier, bool allowMultiCheck) { Identifier = identifier; CheckOnClick = false; multiCheckAllowed = allowMultiCheck; } public ToolStripMenuSelectList() : this(null,false) {} public ToolStripMenuSelectList(Object identifier) : this(identifier,false) {} - + /// /// gets or sets the currently checked item /// - public Object CheckedItem { + public ToolStripMenuSelectListItem CheckedItem { get { IEnumerator items = DropDownItems.GetEnumerator(); while (items.MoveNext()) { - ToolStripMenuItem tsmi = (ToolStripMenuItem)items.Current; + ToolStripMenuSelectListItem tsmi = (ToolStripMenuSelectListItem)items.Current; if (tsmi.Checked) { return tsmi; } @@ -64,7 +67,7 @@ namespace Greenshot.Forms { set { IEnumerator items = DropDownItems.GetEnumerator(); while (items.MoveNext()) { - ToolStripMenuItem tsmi = (ToolStripMenuItem)items.Current; + ToolStripMenuSelectListItem tsmi = (ToolStripMenuSelectListItem)items.Current; if (!multiCheckAllowed && !tsmi.Equals(value)) { tsmi.Checked = false; } else if (tsmi.Equals(value)) { @@ -96,7 +99,7 @@ namespace Greenshot.Forms { IEnumerator items = DropDownItems.GetEnumerator(); IEnumerator sel = value.GetEnumerator(); while (items.MoveNext()) { - ToolStripMenuItem tsmi = (ToolStripMenuItem)items.Current; + ToolStripMenuSelectListItem tsmi = (ToolStripMenuSelectListItem)items.Current; while (sel.MoveNext()) { if (tsmi.Equals(sel.Current)) { tsmi.Checked = true; @@ -217,21 +220,34 @@ namespace Greenshot.Forms { public void UncheckAll() { IEnumerator items = DropDownItems.GetEnumerator(); while (items.MoveNext()) { - ((ToolStripMenuItem)items.Current).Checked = false; + ((ToolStripMenuSelectListItem)items.Current).Checked = false; } } } + /// + /// Event class for the CheckedChanged event in the ToolStripMenuSelectList + /// public class ItemCheckedChangedEventArgs : EventArgs { - public ToolStripMenuSelectListItem Item; + public ToolStripMenuSelectListItem Item { + get; + set; + } public ItemCheckedChangedEventArgs(ToolStripMenuSelectListItem item) { Item = item; } } + /// + /// Wrapper around the ToolStripMenuItem, which can contain an object + /// Also the Checked property hides the normal checked property so we can render our own check + /// public class ToolStripMenuSelectListItem : ToolStripMenuItem { - public Object Data; + + public object Data { + get; + set; + } + } -} - - +} \ No newline at end of file