コード例 #1
0
 private void AutoCompleteListBox_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
 {
     if (AutoCompleteListBox.SelectedItem == null)
     {
         AutoCompleteListBox.SelectedIndex = 0;
     }
     else
     {
         AutoCompleteListBox.ScrollIntoView(AutoCompleteListBox.SelectedItem);
     }
 }
コード例 #2
0
ファイル: TextBox.cs プロジェクト: sengiv/WasmWinforms
        private void ShowAutoCompleteListBox(bool deleting_chars)
        {
            //
            // We only support CustomSource by now
            //

            IList source = auto_complete_cb_source == null ? auto_complete_custom_source : (IList)auto_complete_cb_source.Items;

            bool append  = auto_complete_mode == AutoCompleteMode.Append || auto_complete_mode == AutoCompleteMode.SuggestAppend;
            bool suggest = auto_complete_mode == AutoCompleteMode.Suggest || auto_complete_mode == AutoCompleteMode.SuggestAppend;

            if (Text.Length == 0)
            {
                if (auto_complete_listbox != null)
                {
                    auto_complete_listbox.HideListBox(false);
                }
                return;
            }

            if (auto_complete_matches == null)
            {
                auto_complete_matches = new List <string> ();
            }

            string text = Text;

            auto_complete_matches.Clear();

            for (int i = 0; i < source.Count; i++)
            {
                string item_text = auto_complete_cb_source == null ? auto_complete_custom_source [i] :
                                   auto_complete_cb_source.GetItemText(auto_complete_cb_source.Items [i]);
                if (item_text.StartsWith(text, StringComparison.CurrentCultureIgnoreCase))
                {
                    auto_complete_matches.Add(item_text);
                }
            }

            auto_complete_matches.Sort();

            // Return if we have a single exact match
            if ((auto_complete_matches.Count == 0) || (auto_complete_matches.Count == 1 &&
                                                       auto_complete_matches [0].Equals(text, StringComparison.CurrentCultureIgnoreCase)))
            {
                if (auto_complete_listbox != null && auto_complete_listbox.Visible)
                {
                    auto_complete_listbox.HideListBox(false);
                }
                return;
            }

            auto_complete_selected_index = suggest ? -1 : 0;

            if (suggest)
            {
                if (auto_complete_listbox == null)
                {
                    auto_complete_listbox = new AutoCompleteListBox(this);
                }

                // Show or update auto complete listbox contents
                auto_complete_listbox.Location = PointToScreen(new Point_(0, Height));
                auto_complete_listbox.ShowListBox();
            }

            if (append && !deleting_chars)
            {
                AppendAutoCompleteMatch(0);
            }

            document.MoveCaret(CaretDirection.End);
        }
コード例 #3
0
ファイル: TextBox.cs プロジェクト: Profit0004/mono
		private void ShowAutoCompleteListBox (bool deleting_chars)
		{
			// 
			// We only support CustomSource by now
			//

			IList source = auto_complete_cb_source == null ? auto_complete_custom_source : (IList)auto_complete_cb_source.Items;

			bool append = auto_complete_mode == AutoCompleteMode.Append || auto_complete_mode == AutoCompleteMode.SuggestAppend;
			bool suggest = auto_complete_mode == AutoCompleteMode.Suggest || auto_complete_mode == AutoCompleteMode.SuggestAppend;

			if (Text.Length == 0) {
				if (auto_complete_listbox != null)
					auto_complete_listbox.HideListBox (false);
				return;
			}

			if (auto_complete_matches == null)
				auto_complete_matches = new List<string> ();

			string text = Text;
			auto_complete_matches.Clear ();

			for (int i = 0; i < source.Count; i++) {
				string item_text = auto_complete_cb_source == null ? auto_complete_custom_source [i] :
					auto_complete_cb_source.GetItemText (auto_complete_cb_source.Items [i]);
				if (item_text.StartsWith (text, StringComparison.CurrentCultureIgnoreCase))
					auto_complete_matches.Add (item_text);
			}

			auto_complete_matches.Sort ();

			// Return if we have a single exact match
			if ((auto_complete_matches.Count == 0) || (auto_complete_matches.Count == 1 && 
						auto_complete_matches [0].Equals (text, StringComparison.CurrentCultureIgnoreCase))) {

				if (auto_complete_listbox != null && auto_complete_listbox.Visible)
					auto_complete_listbox.HideListBox (false);
				return;
			}

			auto_complete_selected_index = suggest ? -1 : 0;

			if (suggest) {
				if (auto_complete_listbox == null)
					auto_complete_listbox = new AutoCompleteListBox (this);

				// Show or update auto complete listbox contents
				auto_complete_listbox.Location = PointToScreen (new Point (0, Height));
				auto_complete_listbox.ShowListBox ();
			}

			if (append && !deleting_chars)
				AppendAutoCompleteMatch (0);

			document.MoveCaret (CaretDirection.End);
		}