gpt4 book ai didi

c# - 使用 C# 在 WinForm 中托管的 ListBox 中添加和删除文本

转载 作者:太空狗 更新时间:2023-10-30 00:48:24 24 4
gpt4 key购买 nike

我正在开发一个简单的应用程序,用于将字符串添加/删除到数组中并在 ListBox 中显示。

An image that shows my app

我的代码只显示输入到文本框和中的最新值

private void Add_Click(object sender, EventArgs e)
{
string add = textBox1.Text;
List<string> ls = new List<string>();
ls.Add(add);
String[] terms = ls.ToArray();
List.Items.Clear();
foreach (var item in terms)
{
List.Items.Add(item);
}
}


private void Delete_Click(object sender, EventArgs e)
{

}

最佳答案

这段代码毫无意义。您正在向列表中添加一个项目,然后将其转换为一个数组(仍然包含一个项目),最后循环遍历该数组,这当然会向先前清除的列表框中添加一个项目。因此,您的列表框将始终包含一项。为什么不直接添加项目?

private void Add_Click(object sender, EventArgs e)
{
List.Items.Add(textBox1.Text);
}

private void Delete_Click(object sender, EventArgs e)
{
List.Items.Clear();
}

同时清除 Delete_Click 中的列表框而不是 Add_Click .


如果您希望将项目保存在单独的集合中,请使用 List<string> , 并将其分配给 DataSource列表框的属性。

每当您希望更新列表框时,将其分配给null ,然后重新分配列表。

private List<string> ls = new List<string>();

private void Add_Click(object sender, EventArgs e)
{
string add = textBox1.Text;

// Avoid adding same item twice
if (!ls.Contains(add)) {
ls.Add(add);
RefreshListBox();
}
}

private void Delete_Click(object sender, EventArgs e)
{
// Delete the selected items.
// Delete in reverse order, otherwise the indices of not yet deleted items will change
// and not reflect the indices returned by SelectedIndices collection anymore.
for (int i = List.SelectedIndices.Count - 1; i >= 0; i--) {
ls.RemoveAt(List.SelectedIndices[i]);
}
RefreshListBox();
}

private void RefreshListBox()
{
List.DataSource = null;
List.DataSource = ls;
}

关于c# - 使用 C# 在 WinForm 中托管的 ListBox 中添加和删除文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46898313/

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