/// <summary> /// Starts a new task for the autocomplete and propagates the result via the <see cref="AutocompleteItemsChanged" /> event. /// This method does some technical stuff and delegates the actual search to the <see cref="IAutocompleteSource" />. /// </summary> /// <param name="searchTerm">The term to search for</param> public void Search(string searchTerm) { string id = Guid.NewGuid().ToString(); IAutocompleteSource autocompleteSource = null; lock (m_lockObject) { autocompleteSource = m_autocompleteSource; // no source, no search if (autocompleteSource == null) { return; } LastId = id; } Task.Delay(SearchDelay) .ContinueWith((prevTask) => { // search only if there was no other request during the delay if (DoSearchWithId(id)) { IEnumerable items = autocompleteSource.Search(searchTerm); // a final check if this result will not be replaced by another active search if (DoSearchWithId(id)) { AutocompleteItemsChanged?.Invoke(this, new AutocompleteItemsChangedEventArgs(items)); } } }); }
public AutocompleteViewModel() : base() { m_autocompleteSource = new OperatingSystemAutocompleteSource(); m_selectedItem = null; }
private void AutocompleteSourceChangedHandler(IAutocompleteSource newAutocompleteSource) { if (m_autocompleteController != null) { m_autocompleteController.AutocompleteSource = newAutocompleteSource; } }
private void AutocompleteSourceChangedHandler(IAutocompleteSource newAutocompleteSource, IAutocompleteSource oldAutocompleteSource) { if (oldAutocompleteSource != null && oldAutocompleteSource is IAutocompleteSourceChangingItems) { ((IAutocompleteSourceChangingItems)oldAutocompleteSource).AutocompleteSourceItemsChanged -= AutocompleteSourceItemsChangedHandler; } if (newAutocompleteSource != null && newAutocompleteSource is IAutocompleteSourceChangingItems) { ((IAutocompleteSourceChangingItems)newAutocompleteSource).AutocompleteSourceItemsChanged += AutocompleteSourceItemsChangedHandler; } if (m_autocompleteController != null) { m_autocompleteController.AutocompleteSource = newAutocompleteSource; } }
internal CatalogView( MoviesGridViewModel data, IAutocompleteSource directorsAutocompleteSource, IAutocompleteSource actorsAutocompleteSource) { InitializeComponent(); dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect; var imageColumn = new DataGridViewImageColumn(); var nameColumn = new DataGridViewTextBoxColumn(); var yearColumn = new DataGridViewTextBoxColumn(); imageColumn.ImageLayout = DataGridViewImageCellLayout.Zoom; dataGridView1.Columns.Add(imageColumn); dataGridView1.Columns.Add(nameColumn); dataGridView1.Columns.Add(yearColumn); imageColumn.Resizable = DataGridViewTriState.False; nameColumn.Resizable = DataGridViewTriState.False; yearColumn.Resizable = DataGridViewTriState.False; imageColumn.ReadOnly = true; nameColumn.ReadOnly = true; yearColumn.ReadOnly = true; editFormYear.SetErrorProvider(editMovieFormErrorProvider); editFormNameText.SetErrorProvider(editMovieFormErrorProvider); editFormCountryText.SetErrorProvider(editMovieFormErrorProvider); editFormDirector.SetSource(directorsAutocompleteSource); editFormAddActor.SetSource(actorsAutocompleteSource); editMovieFormHelpProvider.SetShowHelp(editFormNameText, true); editMovieFormHelpProvider.SetHelpString(editFormNameText, "Название фильма"); data.Changed += UpdateGridView; UpdateGridView(data); ShowMovieGrid(); OnCatalogViewResize(null, null); }
/// <summary> /// Creates a new <see cref="AutocompleteController" />. /// </summary> public AutocompleteController() { m_autocompleteSource = null; m_lastId = null; }
public ThemChuyenXuViewModel() : base() { _giaodanSource = new GiaoDanAutoCompleteSource(); _selectedGiaoDan = null; }
public void SetSource(IAutocompleteSource src) { source = src; }