TextBox自动补全邮箱 c#

TextBox实现下图功能:

 

 

1.设置TextBox属性:

 

 集合内可以自己定义输入文本后自动添加的数据,也可以代码完成,本文 采取的是代码完成。

 

2.定义文本后面用于补足的数据

private string[] value = { "@qq.com", "@126.com", "@163.com", "@sina.com", "@sohu.com" };

 

3.为文本框添加TextChanged事件

private void txtEmail_TextChanged(object sender, EventArgs e)
{
    for (int a = 0; a < value.Count(); a++)
    {
        txtEmail.AutoCompleteCustomSource.Add(txtEmail.Text + value[a]);
        txtEmail.AutoCompleteCustomSource.RemoveAt(0);
    }
}

就这!

意思大概就是这么个意思,很简单是不是!

然而本人水平极低:

 

So:Bug如下:

1.无法使用键盘上下键进行选择想要的文本,点击"下"键自动选择第一行提示,点击"上"键自动选择最后一行提示

2.本人使用的输入法为:搜狗输入法(此处非广告),默认输入类型为中文输入(对于一个程序员来说,此举显得及其low),当你在文本框输入时,使用"Shift"转为英文输入时,输入第一个字符-->毫无问题,然后,输入法自动跳回中文输入状态...(暂时无法确定是输入法的问题那就是我的问题了)

(当然,这个问题可以通过设置TextBox控件的ImeMode属性来解决,但我想知道这个Bug的原因(姑且称这种为钻研精神吧))

Bug2解决:写了个焦点离开的事件,作用是焦点离开后保存输入的内容,结果发现一次的输入保存了多条输入记录,因此,造成Bug2的原因是每次编辑AutoCompleteCustomSource的值的时候焦点离开了,编辑完成后焦点再放到文本框中,相当于再次点击的文本框,输入法自然也重新打开为默认输入状态了。。。


3.还是输入问题。当你执意使用中文输入,

巴拉巴拉输入完成想要"Enter"输入到文本框时,啪,文本框内只有你"巴拉巴拉输入"的第一个字符

就这样:

 

 

 

Bug写这么详细不仅是为了证明自己有多low,只是希望路过的大佬指点下迷津,
毕竟在网上还没找到解决方法...

 

posted @ 2021-05-12 09:03  我得想个好名字  阅读(215)  评论(0)    收藏  举报