C# 如何使winforms文本框自动完成正确的大写?

C# 如何使winforms文本框自动完成正确的大写?,c#,winforms,autocomplete,C#,Winforms,Autocomplete,使用一个自动完成设置为SuggestAppend的winforms文本框,我可以键入字符串的一部分,其余的将被很好地建议给我 如果用户键入“smi”查找“Smith,John”,然后通过制表符自动完成字符串的其余部分,则文本框包含“Smith,John”。但是,如果用户单击名称,则大写是正确的 当标签接受建议时,有没有办法让autocomplete重新大写用户输入的字符串部分 按tab键将导致: 单击名称将导致(这是我想要的): 为了处理这种情况,我处理了textbox Leave事件。其思

使用一个自动完成设置为SuggestAppend的winforms文本框,我可以键入字符串的一部分,其余的将被很好地建议给我

如果用户键入“smi”查找“Smith,John”,然后通过制表符自动完成字符串的其余部分,则文本框包含“Smith,John”。但是,如果用户单击名称,则大写是正确的

当标签接受建议时,有没有办法让autocomplete重新大写用户输入的字符串部分

按tab键将导致:

单击名称将导致(这是我想要的):


为了处理这种情况,我处理了textbox Leave事件。其思想是用逗号(结果字符串的第一个字母为大写)拆分文本,然后将字符串重新连接在一起

private void textBox1_Leave(object sender, EventArgs e)
{
  string[] strings = this.textBox1.Text.Split(new char[] { ',' });

  for (int i = 0; i < strings.Length; i++)
  {
    strings[i] = string.Format("{0}{1}", char.ToUpper(strings[i][0]), strings[i].Substring(1));
  }

  this.textBox1.Text = string.Join(",", strings);
}
private void textBox1\u Leave(对象发送方,事件参数e)
{
string[]strings=this.textBox1.Text.Split(新字符[]{',});
for(int i=0;i
这是我在结尾时提出的函数,它用文本框的AutoCompleteCustomSource中的一行(按字母顺序排序)替换文本框的内容

因此,这仍然适用于任何情况(例如,如果用户输入“aLLeN”,它仍然会更正为“aLLeN,Charlie(ID:104)”

但我还需要介绍当按下enter、tab、left和right时自动完成被接受的情况。将此附加到keydown事件不起作用,因为我认为自动完成预先捕获事件,所以我附加到previewkeydown事件:

private void txtAutoComplete_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
    Keys key = (Keys)e.KeyCode;

    if (key == Keys.Enter || key == Keys.Tab || key == Keys.Left || key == Keys.Right)
    {
        fixContent();
    }
}

你能为你迄今为止尝试过的东西提供代码吗?@Ohbowise找不到任何相关信息,希望有人能给我一个正确的方向上的点谢谢指针,这在大多数情况下都会起作用,但我需要处理用户以任何方式制表符或接受自动完成建议的情况。我在上面找到了答案,谢谢救命啊!
private void txtAutoComplete_Leave(object sender, EventArgs e)
{
    fixContent();
}
private void txtAutoComplete_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
    Keys key = (Keys)e.KeyCode;

    if (key == Keys.Enter || key == Keys.Tab || key == Keys.Left || key == Keys.Right)
    {
        fixContent();
    }
}