internal static ToolStrip GetNextToolStrip (ToolStrip ts, bool forward)
{
lock (toolstrips) {
List<ToolStrip> tools = new List<ToolStrip> ();
foreach (WeakReference wr in toolstrips) {
ToolStrip t = (ToolStrip)wr.Target;
if (t != null)
tools.Add (t);
}
int index = tools.IndexOf (ts);
if (forward) {
// Look for any toolstrip after this one in the collection
for (int i = index + 1; i < tools.Count; i++)
if (tools[i].TopLevelControl == ts.TopLevelControl && !(tools[i] is StatusStrip))
return tools[i];
// Look for any toolstrip before this one in the collection
for (int i = 0; i < index; i++)
if (tools[i].TopLevelControl == ts.TopLevelControl && !(tools[i] is StatusStrip))
return tools[i];
} else {
// Look for any toolstrip before this one in the collection
for (int i = index - 1; i >= 0; i--)
if (tools[i].TopLevelControl == ts.TopLevelControl && !(tools[i] is StatusStrip))
return tools[i];
// Look for any toolstrip after this one in the collection
for (int i = tools.Count - 1; i > index; i--)
if (tools[i].TopLevelControl == ts.TopLevelControl && !(tools[i] is StatusStrip))
return tools[i];
}
}
return null;
}