Здесь я предлагаю внести изменения, чтобы ваше текстовое поле несло следующее поведение.
Когда вы не хотите, чтобы текст «добавленное предложение» (как показано на первом изображении) пропалкогда вы набираете backspace в текстовом поле,
вы можете сделать это в следующих шагах
- Получить текст текущего текстового поля (убрал последний символ, так как мы отступили назад)
- Очистить текст
- Отправить текст, взятый обратно в текстовое поле
сделать следующие изменения в вашем коде
private void loadproductName()
{
DataTable dt = _poshelper.getproductName("Bill_Select_ProductName");
if (dt.Rows.Count != 0)
{
string[] postSource = dt
.AsEnumerable()
.Select<System.Data.DataRow, String>(x => x.Field<String>("UniqueName"))
.ToArray();
var source = new AutoCompleteStringCollection();
source.AddRange(postSource);
txtItemName.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend;
txtItemName.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.CustomSource;
txtItemName.AutoCompleteCustomSource = source;
}
}
Я не уверен, что вы делаете вLeave
Событие.Но вы можете добавить textBox
KeyUp
событие и добавить код, как показано ниже в этом событии.
private void txtItemName_KeyUp(object sender, KeyEventArgs e)
{
// track for backspace
if (e.KeyCode == Keys.Back)
{
if (txtItemName.Text != "")
{
string text = txtItemName.Text.Substring(0, txtItemName.Text.Count() - 1);
txtItemName.Text = "";
txtItemName.Focus();
SendKeys.Send(text);
}
}
}