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;
            }
              }
        }