你需要的可能是一個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的好處是,你不應該擔心你怎麼加的項目,他們會爲你訂購。
更新:略有擴大解釋