你需要的可能是一个OrderedDictionary,尽管其他方法也是可能的。我不会去一个Hashtable,因为这是无序的,需要更多的代码才能获得订购信息。
使用以下内容填充OrderedDictionary
(我假设WinForms按钮,但ASP.NET或其他按钮会也可以工作):
// I assume your buttons are created somewhere
// or already exist, i.e., they look something like:
Button MondayXXXButton = new Button();
MondayXXXButton.Name = "MondayXXXButton";
MondayXXXButton.Text = "Hello world";
OrderedDictionary buttons = new OrderedDictionary();
buttons.Add(MondayXXXButton.Name, MondayXXXButton);
// etc: for each button
注意:您可以通过循环遍历所有控件来自动添加按钮。
然后,您可以使用以下方法查找下一个有序项目的位置(不幸的是,如果您不需要循环,就无法得到“下一个项目”,如果需要,您必须编写自己的有序列表) :
Button GetNextButton(OrderedDictionary buttons, string searchThis)
{
IEnumerator enumerator = buttons.Keys.GetEnumerator();
for (enumerator.Reset(); enumerator.MoveNext();)
if (enumerator.Current == searchThis)
break;
// if false, nothing was found, or last item was found
if (enumerator.MoveNext())
return (Button)enumerator.Current;
else
return null;
}
最后,使用它来获取某个按钮并检索下一个:
Button someButton = (Button) buttons["MondayYYYButton"];
Button nextButton = GetNextButton(buttons, "MondayYYYButton");
使用OrderedDictionary的好处是,你不应该担心你怎么加的项目,他们会为你订购。
更新:略有扩大解释