TextBox.Text没有自动完成

时间:2018-03-02 18:08:44

标签: c# winforms

有没有办法让TextBox中的Text具有附加文本的自动填充功能,但没有附加的部分?我想在Textbox_TextChanged事件中使用此文本。这段代码不起作用

private void Textbox_TextChanged(object sender, EventArgs e)
{
  var t = textbox.Text.Substring(0, textbox.SelectionStart);
}

在附加自动填充文本时,似乎会触发TextChanged事件,但在此之后会应用附加文本的选择。

E.g。如果用户输入ho且自动填充功能包含条目house,则文本框中包含文本house,但use已被选中,并且可在用户继续时覆盖打字。我希望得到ho - 部分,因为这是用户输入的文字,而没有use - 部分,它不是来自用户。

2 个答案:

答案 0 :(得分:1)

问题是令人困惑的,我提供了一个解释,因为我理解它。

更改文本框中的文本时会触发文本更改事件。您可以使用建议而不是附加

  

假设文本框名称为" Textbox1"

private void Textbox1_TextChanged(object sender, EventArgs e)
{
  this.Textbox1.AutoCompleteMode = 
  System.Windows.Forms.AutoCompleteMode.Suggest;
  var t = Textbox1.Text;
}

答案 1 :(得分:0)

我延迟解决了,所以文本框有时间应用选择。到目前为止,这似乎有效,但如果选择的应用时间超过等待时间,则可能会出现问题。

private async void Textbox_TextChanged(object sender, EventArgs e)
{
    await Task.Delay(200);
    var t = textbox.Text.Substring(0, textbox.SelectionStart);
}