Introduction
In this article I’ll explain how to implement word completion feature. This feature is very popular and very useful and comes with most good text editors (Don’t count the MS Notepad). You may also want to implement that feature in your application. If you do then this article will help you in getting the simple logic behind this feature.
This article covers the following:
About Word Completion
If you are familiar with Notepad++ then you must have used this feature. In word completion we type a few characters of the beginning of the word and when we press “Cntrl + Enter” our word is completed automatically. This is the only thing that word completion deals with. Don’t mix word completion with intelli sense of Visual Studio or Code Snippets, they are entirely different. So now we know what word completion does.
Understanding The Logic
To create this module we can use the following logic (not optimized):
That’s how our word completion will work. Let’s write a pseudo code for it.
Implementing The Logic
using Microsoft.Phone.Controls;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
namespace Demo
{
public partial class MainPage : PhoneApplicationPage
{
// Constructor
public MainPage()
{
InitializeComponent();
keywordList.Add(“const“);
keywordList.Add(“public“);
keywordList.Add(“private“);
keywordList.Add(“protected“);
keywordList.Add(“extends“);
keywordList.Add(“class“);
}
string word = “”;
List<string> keywordList = new List<string>();
private void txtArea_KeyUp(object sender, System.Windows.Input.KeyEventArgs e)
{
if (e.Key == System.Windows.Input.Key.Space)
{
foreach (var item in keywordList)
{
if (item.IndexOf(word.ToLower())==0)
{
string temp = txtArea.Text;
txtArea.Text = temp.Substring(0, temp.Length – word.Length-1) + item + ” “;
txtArea.Select(txtArea.Text.Length, 0);
word = “”;
break;
}
}
word = “”;
}
else if (!char.IsControl(char.ConvertFromUtf32(e.PlatformKeyCode),0))
{
word += char.ConvertFromUtf32(e.PlatformKeyCode);
}
}
}
}
Other Variants