private Control GetCbOrOInputontrolFromMembers(SearchTag stag) { loading = true; try { //input can be here any time, regardless of childs! var input = GetUserInputControl(stag); if (input != null) { flpReflectionMembers.Controls.Add(input); return(input); } var list = SearchTagExtractor.ExtractTagsFromAttributes(stag.MyRuntimePropertyValue, stag); if (list.Any()) { var ordered = (from a in list orderby a.TagName select a).ToList(); ComboBox cb = new ComboBox { DropDownStyle = ComboBoxStyle.DropDownList, FlatStyle = FlatStyle.Standard }; flpReflectionMembers.Controls.Add(cb); cb.DataSource = ordered; cb.DisplayMember = "TagName"; cb.SelectedValueChanged += (sender, e) => { var tag = cb.SelectedItem as SearchTag; var childcb = GetCbOrOInputontrolFromMembers(tag); }; return(cb); } return(null); } catch (Exception e) { Log.Warn(e); } finally { this.loading = false; } return(null); }
private Control GetCbOrOInputontrolFromMembers(SearchTag stag) { _loading = true; try { //input can be here any time, regardless of childs! var input = GetUserInputControl(stag); if (input != null) { flpReflectionMembers.Controls.Add(input); return(input); } List <SearchTag> list = new List <SearchTag>(SearchTagExtractor.ExtractTagsFromAttributes(stag.MyRuntimePropertyValue).OrderBy(x => x.TagName)); if (list.Count > 0) { ComboBox cb = new ComboBox { DropDownStyle = ComboBoxStyle.DropDownList, FlatStyle = FlatStyle.Standard }; flpReflectionMembers.Controls.Add(cb); cb.DataSource = list; cb.DisplayMember = "TagName"; cb.SelectedValueChanged += (sender, e) => { var tag = cb.SelectedItem as SearchTag; var childcb = GetCbOrOInputontrolFromMembers(tag); }; return(cb); } return(null); } catch (Exception e) { Log.Warn(e); } finally { _loading = false; } return(null); }