private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { if (comboBox1.SelectedItem == null) return; var description = comboBox1.SelectedItem.ToString(); var matchingKeys = _model.MenuItems.Where(x => x.Descriptions.Contains(description)).OrderBy(x => x.Module).ToList(); if (!matchingKeys.Any() && description.Length > 4) { var moduleRemoved = description; moduleRemoved = moduleRemoved.Substring(moduleRemoved.IndexOf(" ") + 1); matchingKeys = _model.MenuItems.Where( x => x.Descriptions.Contains(moduleRemoved) && x.Module.ToUpper().StartsWith(description.ToUpper().Substring(0, 2))) .OrderBy(x => x.Module) .ToList(); } keyInformation1.LoadItem(matchingKeys.FirstOrDefault()); for (int i = 1; i < matchingKeys.Count(); i++) { var name = string.Format("key{0}", i); if (panel1.Controls.ContainsKey(name)) { var info = panel1.Controls[name] as KeyInformation; if (info == null) continue; info.LoadItem(matchingKeys[i]); } else { var info = new KeyInformation { Name = name, Left = keyInformation1.Left, Top = panel1.Controls.Cast<Control>().Max(x => x.Bottom) + 6, Anchor = AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Right }; info.LoadItem(matchingKeys[i]); info.SolutionClicked += LoadSolution; panel1.Controls.Add(info); } } for (int i = matchingKeys.Count(); i < 9999; i++) { var name = string.Format("key{0}", i); if (panel1.Controls.ContainsKey(name)) { panel1.Controls.RemoveByKey(name); } } SelectKey(keyInformation1); }
private void SelectKey(KeyInformation info) { if (info == null) return; foreach (KeyInformation key in panel1.Controls) { key.Active = key == info; if (key.Active) { Focus(); ActiveControl = key; } } }