//=========================================================================================
		/// <summary>Ищет единственный элемент по заданной строке. Если их 0 или больше 1, возвращает null.</summary>
		int? FindAloneItemByKey(CompletionVariantList items, string key)
		{
			// Количество элементов с вхождением заданной строки
			int iFoundCount = 0;
			// Индекс последнего совпавшего элемента
			int iItemId = 0;

			for (int i = 0; i < items.Count; i++)
				if (items[i].Text.StartsWith(key, true, null))
				{
					iFoundCount++;
					iItemId = i;
				}

			if (iFoundCount != 1)
				return null;

			return iItemId;
		}
		//==================================================================================
		/// <summary>Загружает варианты в ListView.</summary>
		internal void LoadVariants(CompletionVariantList items)
		{
			listItems.Items.Clear();

			if (items == null)
				return;

			foreach (CompletionVariant item in items)
			{
				ListViewItem lvItem = new ListViewItem(item.Text, item.ImageIndex) { ToolTipText = item.Tooltip };
				listItems.Items.Add(lvItem);
			}

			this.listItems.SelectItem(0);
		}
		//=========================================================================================
		/// <summary>Отображает список всех вариантов.</summary>
		void ShowVariants(TextPoint tokenStart, Point point, CompletionVariantList items)
		{
			if (items == null || items.Count == 0)
			{
				if (this.IsVariantsVisible)
					this.HideVariants();
				return;
			}

			this.TokenStart = tokenStart;

			this.FormWithList.LoadVariants(items);
			this.ShowVariants(point);
		}