Tuesday, April 30, 2013

Silver Light Auto Complete invalid input character protection


using System;

using System.Collections.Generic;

using System.Linq;

using System.Net;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Documents;

using System.Windows.Input;

using System.Windows.Media;

using System.Windows.Media.Animation;

using System.Windows.Shapes;

 

namespace AutoCompleteBindingData

{

    public partial class MainPage : UserControl

    {

        List<string> strList = new List<string>();

        public MainPage()

        {

            InitializeComponent();

            string str = "abc,acd,ade,bcd,cde,def,efg,fgh,ghi, hijv,jkl";

            strList = str.Split(',').ToList();

            autoCompleteBox1.ItemsSource = strList;

            autoCompleteBox1.KeyUp += new KeyEventHandler(autoCompleteBox1_KeyUp);

        }

 

        void autoCompleteBox1_KeyUp(object sender, KeyEventArgs e)

        {

         

        }

        string lastSear = "";

        private void autoCompleteBox1_KeyDown(object sender, KeyEventArgs e)

        {

            bool isExist = false;

            string st = autoCompleteBox1.SearchText;

            if (e.PlatformKeyCode != 32)

            {

                st = st + e.Key;

            }

            else

            {

                st = st + " ";

            }

            st = st.ToLower();

            foreach (string str in strList)

            {

                if (str.ToLower().Contains(st))

                {

                    int stLen = st.Length;

                    string subStr = str.Substring(0, stLen).ToLower();

                    if (subStr.Equals(st))

                    {

                        isExist = true;

                        break;

                    }

                }

            }

            if (!isExist)

            {

                e.Handled = true;

            }

        }

 

 

    }

}

<Grid x:Name="LayoutRoot" Background="White">

<sdk:AutoCompleteBox Height="28" HorizontalAlignment="Left" Margin="137,168,0,0" Name="autoCompleteBox1" VerticalAlignment="Top" Width="225" KeyDown="autoCompleteBox1_KeyDown" />

</Grid>