当前位置: 首页 > 知识库问答 >
问题:

C#WPF(删除按钮)从listview中删除项

廉子民
2023-03-14

我正在用C#WPF做一个项目,它包含在一个客户机管理中,在那里我添加了新的客户机,在一个txt文档中有save,我有一个listview,在那里我可以看到所有添加的客户机,但现在我想实现一个delete按钮,在那里我从listview中选择一个客户机,并可以删除它。如果我现在做的正确,如果有人能帮我…,…谢谢。

public partial class Window1 : Window
{
    public Window1()
    {
        InitializeComponent();

    }

    private void button_Voltar_Click(object sender, RoutedEventArgs e)
    {

        MainWindow mw = new MainWindow();
        mw.Show();
        this.Close();
    }

    private void button_Listar_Click(object sender, RoutedEventArgs e)
    {
        List<Cliente> clientes = new List<Cliente>();

        string[] lines = File.ReadAllLines(@"C:\Users\Rui\Documents\Visual Studio 2015\Projects\Gestão Clientes Empresas\dadosClientes.txt");

        foreach (string line in lines)
        {
            string[] parts = line.Split(';');
            Cliente a = new Cliente();
            a.Nome = parts[0];
            a.Nif = parts[1];
            a.Morada = parts[2];
            clientes.Add(a);
        }

        listView.ItemsSource = clientes;

    }

    private bool myTextFilter(object item)
    {
        if (String.IsNullOrEmpty(textBox_pesquisa.Text))
            return true;
        var cliente = (Cliente)item;
        return (cliente.Nome.StartsWith(textBox_pesquisa.Text, StringComparison.OrdinalIgnoreCase));

    }

    private void textBox_pesquisa_TextChanged_1(object sender, TextChangedEventArgs e)
    {
        ICollectionView view = CollectionViewSource.GetDefaultView(listView.ItemsSource);
        view.Filter = new Predicate<object>(myTextFilter);
    }

    private void button_Apagar_Click(object sender, RoutedEventArgs e) \\Delete Button!
    {
        listView.Items.RemoveAt(listView.Items.IndexOf(listView.SelectedItems[0]));

    }
}

共有1个答案

许丁雷
2023-03-14

您可以使用ObservableCollection:

public partial class Window1 : Window
{
    public Window1()
    {
        InitializeComponent();
    }

    private void button_Voltar_Click(object sender, RoutedEventArgs e)
    {
        MainWindow mw = new MainWindow();
        mw.Show();
        this.Close();
    }

    private readonly ObservableCollection<Cliente> clientes = new ObservableCollection<Cliente>();
    private void button_Listar_Click(object sender, RoutedEventArgs e)
    {
        string[] lines = File.ReadAllLines(@"C:\Users\Rui\Documents\Visual Studio 2015\Projects\Gestão Clientes Empresas\dadosClientes.txt");

        foreach (string line in lines)
        {
            string[] parts = line.Split(';');
            Cliente a = new Cliente();
            a.Nome = parts[0];
            a.Nif = parts[1];
            a.Morada = parts[2];
            clientes.Add(a);
        }
        listView.ItemsSource = clientes;
    }

    private bool myTextFilter(object item)
    {
        if (String.IsNullOrEmpty(textBox_pesquisa.Text))
            return true;
        var cliente = (Cliente)item;
        return (cliente.Nome.StartsWith(textBox_pesquisa.Text, StringComparison.OrdinalIgnoreCase));
    }

    private void textBox_pesquisa_TextChanged_1(object sender, TextChangedEventArgs e)
    {
        ICollectionView view = CollectionViewSource.GetDefaultView(listView.ItemsSource);
        view.Filter = new Predicate<object>(myTextFilter);
    }

    private void button_Apagar_Click(object sender, RoutedEventArgs e)
    {
        Cliente client = listView.SelectedItem as Cliente;
        if(client != null)
            clientes.Remove(client);
    }
}
 类似资料:
  • 我有一个嵌套的列表框(主对象列表中的对象集合),它需要删除基础项。 删除项时,我可以重置主列表的itemssource,但主列表将有大量项,每次从其基础集合中移除项时,主滚动条也将重置,这使得用户愿意以非常痛苦的方式杀死我。 我的问题:如何找到项的容器,单击了哪个按钮,如何找到项本身,以便杀死@&!$*&#$@(诅咒拟声词)? 以下是列表的XAML示例: 我的应该怎么样?

  • 如何在JavaFX中创建每行都有删除按钮和删除按钮操作?

  • 当我更改ListViewAdapter时,我的项目将无法从ListView中清除,并且我有一些空白条目。 她是我的密码:

  • 我对下面的Java程序有问题。我在Ubuntu系统上使用带有JDK-1.8u25的JavaFX。我想显示一个ListView,并从列表中删除突出显示的条目。我创建了一个列表,并将其与一个可观察列表配对,以通知侦听器事件。然而,通过删除下面的“orderOvList.remove(i,i 1)”项来更改列表似乎会生成另一个侦听器事件。所以,我似乎在侦听器代码的主体中递归。我想过将list元素从nor

  • 如何使用按钮onClick从ListView中删除所有内容?当我尝试“fullCourseList.clear();”时,我无法添加更多课程,只有再次访问页面后,页面才会刷新

  • 如您所见,我制作了对话框,displaynotedate用于读取与金额相关的其他数据,并在对话框中读取: