Is there anyway to change the search function for the AutoCompleteStringCollection
class for the TextBox
class? Right now, I have it on the default search function where the beginning letters of my suggestions match the letters of the user input? My suggestions come from a custom source.
Asked
Active
Viewed 345 times
1

Manfred Radlwimmer
- 13,257
- 13
- 53
- 62

Lawrence Vo
- 177
- 2
- 11
-
Please tag your presentation technology. We have no idea what type of "TextBox" you're referring to. – rory.ap Oct 24 '16 at 14:06
-
@rory.ap. Sorry about that. – Lawrence Vo Oct 24 '16 at 14:06
-
You didn't specify what kind of search feature you are looking for. – LarsTech Oct 24 '16 at 15:02
1 Answers
0
You can make your own AutoComplete search - by using TextChange Here is answer: C# winforms combobox dynamic autocomplete
Code:
string[] data = new string[] {
"Absecon","Abstracta","Abundantia","Academia","Acadiau","Acamas",
"Ackerman","Ackley","Ackworth","Acomita","Aconcagua","Acton","Acushnet",
"Acworth","Ada","Ada","Adair","Adairs","Adair","Adak","Adalberta","Adamkrafft",
"Adams"
};
public Form1()
{
InitializeComponent();
}
private void comboBox1_TextChanged(object sender, EventArgs e)
{
HandleTextChanged();
}
private void HandleTextChanged()
{
var txt = comboBox1.Text;
var list = from d in data
where d.ToUpper().StartsWith(comboBox1.Text.ToUpper())
select d;
if (list.Count() > 0)
{
comboBox1.DataSource = list.ToList();
//comboBox1.SelectedIndex = 0;
var sText = comboBox1.Items[0].ToString();
comboBox1.SelectionStart = txt.Length;
comboBox1.SelectionLength = sText.Length - txt.Length;
comboBox1.DroppedDown = true;
return;
}
else
{
comboBox1.DroppedDown = false;
comboBox1.SelectionStart = txt.Length;
}
}
private void comboBox1_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Back)
{
int sStart = comboBox1.SelectionStart;
if (sStart > 0)
{
sStart--;
if (sStart == 0)
{
comboBox1.Text = "";
}
else
{
comboBox1.Text = comboBox1.Text.Substring(0, sStart);
}
}
e.Handled = true;
}
}

Community
- 1
- 1

David Abaev
- 690
- 5
- 22