gpt4 book ai didi

c# - 文本框自动完成(多行)

转载 作者:可可西里 更新时间:2023-11-01 08:42:34 28 4
gpt4 key购买 nike

我正在使用 C# 进行自动建议/完整文本框,我点击了以下链接,但文本框未显示建议​​

How to create autosuggest textbox in windows forms?

//-------- Get all distinct description -----------------------------
OleDbCommand command = new OleDbCommand(Queries.qry16, Connection);
OleDbDataReader reader = command.ExecuteReader();

//--------- Storing ------------------------------------
while (reader.Read())
{
namesCollection.Add(reader.GetValue(0).ToString());
}

//----------- Close after use ---------------------------------------
reader.Close();

//----------- Set the auto suggestion in description box ------------
descriptionBox.AutoCompleteMode = AutoCompleteMode.Suggest;
descriptionBox.AutoCompleteSource = AutoCompleteSource.CustomSource;
descriptionBox.AutoCompleteCustomSource = namesCollection;

这是我的代码,它在 winform 的加载函数中。 nameCollection 初始化在构造函数中...请帮助使其正常工作。

我正在编辑我的帖子而不是创建新的...我已经在单行文本框中尝试了我自己的代码并且它有效。现在我想要在多行中使用相同的...为了研究,我在谷歌上搜索了超过 2 天尝试不同的代码(一个具有智能感知)但它没有作为文本框中可用的自动建议工作。谁能给我建议将整个过程编码为多行。谢谢。

最佳答案

AutoCompleteSource does not work on multiline TextBox controls.

这意味着您需要从头开始:

我会制作一个 ListBox 来显示您的自动完成内容:

var listBox = new ListBox();
Controls.Add(listBox);

你需要在你的文本框上进行事件处理,但这有点粗糙,所以我会重写它以在某个时候停止 keyupevent:

private void textBox_KeyUp(object sender, KeyEventArgs e)
{
var x = textBox.Left;
var y = textBox.Top + textBox.Height;
var width = textBox.Width + 20;
const int height = 40;

listBox.SetBounds(x, y, width, height );
listBox.KeyDown += listBox_SelectedIndexChanged;

List<string> localList = list.Where(z => z.StartsWith(textBox.Text)).ToList();
if(localList.Any() && !string.IsNullOrEmpty(textBox.Text))
{
listBox.DataSource = localList;
listBox.Show();
listBox.Focus();

}
}

现在您只需要一个处理程序来设置文本框中的文本:

 void listBox_SelectedIndexChanged(object sender, KeyEventArgs e)
{
if(e.KeyValue == (decimal) Keys.Enter)
{
textBox2.Text = ((ListBox)sender).SelectedItem.ToString();
listBox.Hide();
}
}

在适当的地方进行空检查

关于c# - 文本框自动完成(多行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12972761/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com