/// <summary> /// Initializes a new instance of the <see cref="AutocompleteMenuHost"/> class. /// </summary> /// <param name="menu">The menu.</param> public AutocompleteMenuHost(ZeroitAutocompleteMenu menu) { AutoClose = false; AutoSize = false; Margin = Padding.Empty; Padding = Padding.Empty; Menu = menu; ListView = new AutocompleteListView(); }
/// <summary> /// Sets the autocomplete menu. /// </summary> /// <param name="control">The control.</param> /// <param name="menu">The menu.</param> public void SetAutocompleteMenu(Control control, ZeroitAutocompleteMenu menu) { if (menu != null) { if (WrapperByControls.ContainsKey(control)) { return; } var wrapper = menu.CreateWrapper(control); if (wrapper == null) { return; } // if (control.IsHandleCreated) { menu.SubscribeForm(wrapper); } else { control.HandleCreated += (o, e) => menu.SubscribeForm(wrapper); } // AutocompleteMenuByControls[control] = this; // wrapper.LostFocus += menu.control_LostFocus; wrapper.Scroll += menu.control_Scroll; wrapper.KeyDown += menu.control_KeyDown; wrapper.MouseDown += menu.control_MouseDown; } else { AutocompleteMenuByControls.TryGetValue(control, out menu); AutocompleteMenuByControls.Remove(control); ITextBoxWrapper wrapper = null; WrapperByControls.TryGetValue(control, out wrapper); WrapperByControls.Remove(control); if (wrapper != null && menu != null) { wrapper.LostFocus -= menu.control_LostFocus; wrapper.Scroll -= menu.control_Scroll; wrapper.KeyDown -= menu.control_KeyDown; wrapper.MouseDown -= menu.control_MouseDown; } } }