diff --git a/PROMS/Volian.Controls.Library/ListBoxMulti.cs b/PROMS/Volian.Controls.Library/ListBoxMulti.cs
new file mode 100644
index 00000000..51582552
--- /dev/null
+++ b/PROMS/Volian.Controls.Library/ListBoxMulti.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace Volian.Controls.Library
+{
+ public partial class ListBoxMulti : ListBox
+ {
+ public ListBoxMulti()
+ {
+ Visible = true;
+ SelectionMode = SelectionMode.MultiSimple;
+
+ SelectedIndexChanged += lb_SelectedIndexChanged;
+
+ Disposed += ListBoxMulti_Disposed;
+ }
+
+ public int singleselectedindex { get; set; }
+
+ private void lb_SelectedIndexChanged(object sender, EventArgs e)
+ {
+ ListBoxMulti tmp = (ListBoxMulti)sender;
+
+ if (tmp.SelectedItems.Count == 1 && tmp.singleselectedindex == 0)
+ {
+ tmp.ClearSelected();
+ }
+ else if (tmp.SelectedItems.Count == 1)
+ tmp.singleselectedindex = tmp.SelectedIndex;
+ else
+ tmp.singleselectedindex = -1;
+
+ }
+
+ private void ListBoxMulti_Disposed(object sender, EventArgs e)
+ {
+ SelectedIndexChanged -= lb_SelectedIndexChanged;
+ }
+ }
+}
diff --git a/PROMS/Volian.Controls.Library/Volian.Controls.Library.csproj b/PROMS/Volian.Controls.Library/Volian.Controls.Library.csproj
index 61b2eb86..87305e39 100644
--- a/PROMS/Volian.Controls.Library/Volian.Controls.Library.csproj
+++ b/PROMS/Volian.Controls.Library/Volian.Controls.Library.csproj
@@ -280,6 +280,9 @@
ImageItem.cs
+
+ Component
+
Form
diff --git a/PROMS/Volian.Controls.Library/frmEPAnnotationDetails.cs b/PROMS/Volian.Controls.Library/frmEPAnnotationDetails.cs
index 0f260f1a..44c3cada 100644
--- a/PROMS/Volian.Controls.Library/frmEPAnnotationDetails.cs
+++ b/PROMS/Volian.Controls.Library/frmEPAnnotationDetails.cs
@@ -24,7 +24,7 @@ namespace Volian.Controls.Library
private Dictionary _DicCheckBox;
private Dictionary _DicComboBox;
private Dictionary _DicSingleRO;
- private Dictionary _DicMultiRO;
+ private Dictionary _DicMultiRO;
private string multiseparator = ",";
@@ -35,7 +35,7 @@ namespace Volian.Controls.Library
_DicCheckBox = new Dictionary();
_DicComboBox = new Dictionary();
_DicSingleRO = new Dictionary();
- _DicMultiRO = new Dictionary();
+ _DicMultiRO = new Dictionary();
InitializeSpecificControls(currAnn);
_MyStepTabRibbon = new StepTabRibbon();
}
@@ -138,16 +138,12 @@ namespace Volian.Controls.Library
}
if (EP.type.ToLower() == "romulti")
{
- ListBox lb = new ListBox();
- lb.Visible = true;
+ ListBoxMulti lb = new ListBoxMulti();
List tmps = EP.getROList(currAnn, false);
lb.DisplayMember = "Text";
lb.ValueMember = "Value";
-
lb.Width = TextRenderer.MeasureText(tmps.OrderByDescending(x => x.Text.Length).First().Text, lb.Font).Width + SystemInformation.VerticalScrollBarWidth;
- lb.SelectionMode = SelectionMode.MultiSimple;
- //lb.IsSynchronizedWithCurrentItem = false;
lb.DataSource = tmps;
_DicMultiRO.Add(EP.name, lb);
@@ -170,7 +166,7 @@ namespace Volian.Controls.Library
pair.Value.SelectedValue = -1;
}
- foreach (KeyValuePair pair in _DicMultiRO)
+ foreach (KeyValuePair pair in _DicMultiRO)
{
pair.Value.ClearSelected();
string val = MyConfig.GetValue("EP", pair.Key);
@@ -184,7 +180,10 @@ namespace Volian.Controls.Library
pair.Value.SetSelected(pair.Value.FindString(text), true);
}
}
- }
+ pair.Value.singleselectedindex = -1;
+ }
+
+
}
private void FieldStepRTB_Enter(object sender, EventArgs e)
@@ -246,7 +245,7 @@ namespace Volian.Controls.Library
}
else if (EP.type.ToLower() == "romulti")
{
- ListBox lbcur = _DicMultiRO[EP.name];
+ ListBoxMulti lbcur = _DicMultiRO[EP.name];
string newvalues = String.Join(multiseparator, lbcur.SelectedItems.OfType().Select(item => item.Value));
string oldvalues = MyConfig.GetValue("EP", EP.name);
if (newvalues != oldvalues)
@@ -287,6 +286,11 @@ namespace Volian.Controls.Library
tb.Enter -= FieldStepRTB_Enter;
}
+ foreach (ListBoxMulti lb in _DicMultiRO.Values)
+ {
+ lb.Dispose();
+ }
+
Load -= Form1Load_setDefaults;
}
}