我目前需要一个可以建议/附加所需列表项目的多行文本框到目前为止我能够得到建议但是现在唯一的问题是它工作异常,即显示建议对于空格,当我按Enter键以自动完成它时会给我多个字符串的字符串,也有一个问题,由于我的逻辑,它只显示文本框末尾的字符串的建议,而不是一个插入之间。 到目前为止,我的代码正在关注
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace multiline_text_suggest
{
public partial class Form1 : Form
{
ListBox listBox = new ListBox();
public Form1()
{
InitializeComponent();
Controls.Add(listBox);
listBox.Hide();
textsplit();
}
string intellisenes;
private void textsplit() {
listBox1.Items.Clear();
foreach (string c in textBox.Text.Split()) {
listBox1.Items.Add(c);
}
intellisenes = listBox1.Items[listBox1.Items.Count-1].ToString().Trim();
}
void listBox_SelectedIndexChanged(object sender, KeyEventArgs e)
{
if (e.KeyValue == (decimal)Keys.Enter)
{
textBox.Text += ((ListBox)sender).SelectedItem.ToString();
textBox.Focus();
listBox.Hide();
}
}
private void textBox1_KeyUp(object sender, KeyEventArgs e)
{
textsplit();
listBox.SetBounds(textBox.Left, textBox.Top + textBox.Height, textBox.Width + 20, 40);
listBox.KeyDown += listBox_SelectedIndexChanged;
List<string> list = new List<string>(){"king","kong"};
var localList = list.Where(z => z.StartsWith(intellisenes.Trim())).ToList();
if (localList.Any() && !string.IsNullOrEmpty(textBox.Text) && !string.IsNullOrWhiteSpace(textBox.Text))
{
listBox.DataSource = localList;
listBox.Show();
listBox.Focus();
}
}
private void textBox_TextChanged(object sender, EventArgs e)
{
textsplit();
}
}
}
原谅我有任何错误,因为我只是编码的菜鸟。