如何逐字符地选择文本框中的值,如HDPOS自动填充文本框
我试过了 在页面加载
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.AutoCompleteCustomSource = source;
}
}
暂停
private void txtItemName_Leave(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(txtItemName.Text))
{
DataSet ds1 = _poshelper.getproductNameExistWhileLeave(txtItemName.Text);
if (ds1.Tables[0].Rows.Count == 0)
{
txtItemName.Text = "";
txtItemName.Focus();
}
else
{
loadLeave(ds1);
txtItemName.Focus();
}
}
}
我需要
如果我使用退格键删除某个字符,则会永久删除
我需要像第二张图片,如果我删除意味着我需要保留文本框
更新
更多澄清,来自评论
如果我按回空格键,则不应删除文本框中的字符串。相反,它应该选择每个字符。每次我按退格键
答案 0 :(得分:0)
这里我建议进行更改,以使您的文本框具有以下行为。
如果您不希望在文本框中键入退格键时“附加建议”文本(如第一张图片所示)消失,
你可以做这些步骤
在您的代码中执行以下更改
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
的{{1}}事件,并在该事件中添加如下代码。
KeyUp