a非常适合 a被“绑定”到 aDictionary
的 1:1 场景。在这里, CheckBox 充当并且充当 的值,可以对其进行强类型化以确保您在编译时处理正确类型的数据。CheckBox
Label
Key
Label
Dictionary
// Declare this at class level
private Dictionary<CheckBox, Label> myControls = new Dictionary<CheckBox, Label>();
// ...
// Dictionary initialization goes in the ctor
// unless you generate the controls at run-time.
// If you generate controls, place it after the generation itself
myControls.Add(chk1, lab1);
myControls.Add(chk2, lab2);
// and so on...
// ...
// When you want to cycle, do this:
foreach(var controlsPair in myControls) {
// controlsPair is KeyValuePair<CheckBox, Label>
if(controlsPair.Key.Checked) continue; // SEE (*) BELOW
controlsPair.Value.Text = rng.Next(1, 7).ToString();
}
(*):我总是建议检查条件的正确性,因为我在阅读代码时发现逻辑更容易理解,但最终的行为完全一样。
注意:此代码应该适用于任何地方(WinForms、WPF、Silverlight 等)