【问题标题】:C# Deleting a customer from its IDC# 从客户 ID 中删除客户
【发布时间】:2021-08-23 22:14:49
【问题描述】:

您好,我想知道是否可以在我的 customer.cs 中创建一个方法来根据其 ID 删除客户。我希望它如何工作是用户将从仅显示客户名字的列表框中选择一个客户,然后点击删除,这会将客户从列表框中删除。但我想以某种方式在 customer.cs 中创建一个方法,该方法将查看 ID,然后在正确的情况下将其删除。这可以做到吗?任何帮助都会创建谢谢。

form.cs:

public partial class AddCustomer : Form
{

    List<Customer> list = new List<Customer>();
    Random rand = new Random();


    public AddCustomer()
    {
        InitializeComponent();


    }

   // Adds Customer
    private void buttonAddCustomer_Click(object sender, EventArgs e)
    {
  
        Customer customer = new Customer();
        customer.customerId = rand.Next();
        customer.firstName = textBoxfn.Text;

        list.Add(customer);
        listBoxCustomers.Items.Add(customer.firstName);


    }

    // Deletes Customer
    private void buttonDeleteCustomer_Click(object sender, EventArgs e)
    {
        listBoxCustomers.Items.Remove(listBoxCustomers.SelectedItem);

   
    }
  }
 }

客户.cs:

 public class Customer
  {
    public int customerId;
    public string firstName;
    public string lastName;
    public string phoneNumber;
    public string address;

    public string FirstName
    {
        get { return firstName; }
        set { firstName = value; }
    }

    public string LastName
    {
        get { return lastName; }
        set { lastName = value; }
    }

    public string PhoneNumber
    {
        get { return phoneNumber; }
        set { phoneNumber = value; }
    }

    public string Address
    {
        get { return address; }
        set { address = value; }
    }

 }
}

【问题讨论】:

  • 方法怎么会知道正确的呢?它将是被选中的……还有什么其他标准?
  • 我不确定。我刚刚被告知它需要删除选定的客户,但我需要在 customer.cs 中创建一个方法,该方法将通过其 ID 而不是 firstName 删除它。
  • 如果您必须使用列表框...您需要选择 ID + ":" + Name...或其他内容,然后解析 ID。只需使用具有文本字段和值字段的下拉菜单即可。

标签: c# class methods


【解决方案1】:

一个想法是将您的客户列表加载到BindingList&lt;Customer&gt;

现在使用这种方法,您可以使用 BindingList 和 ListBox 的选定索引。

我使用了一个预定义的客户类别。

public class Customer
{
    public int CustomerIdentifier { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Street { get; set; }
    public string City { get; set; }
    public string PostalCode { get; set; }
    public int CountryIdentifier { get; set; }

    public override string ToString() => $"{FirstName} {LastName}";
}

模拟数据

public class MockedData
{
    public static List<Customer> Customers() => new List<Customer>()
    {
        new Customer()
        {
            CustomerIdentifier = 1, FirstName = "Jim", LastName = "Adams",
            Street = "120 Hanover Sq.", City = "London", PostalCode = "WA1 1DP", 
            CountryIdentifier = 19
        },
        new Customer()
        {
            CustomerIdentifier = 2, FirstName = "Mary", LastName = "Adams",
            Street = "1 rue Alsace-Lorraine", City = "Toulouse", PostalCode = "31000", 
            CountryIdentifier = 8
        },
        new Customer()
        {
            CustomerIdentifier = 3, FirstName = "Karen", LastName = "White",
            Street = "120 Hanover Sq.", City = "London", PostalCode = "WA1 1DP", 
            CountryIdentifier = 19
        }
    };
}

表单代码

public partial class Form1 : Form
{
    private readonly BindingList<Customer> _customersBindingList;
    public Form1()
    {
        InitializeComponent();

        _customersBindingList = new BindingList<Customer>(MockedData.Customers());
        listBoxCustomers.DataSource = _customersBindingList;
    }

    private void RemoveCurrentButton_Click(object sender, EventArgs e)
    {
        if (listBoxCustomers.SelectedIndex > -1)
        {
            _customersBindingList.RemoveAt(listBoxCustomers.SelectedIndex);
        }

        RemoveCurrentButton.Enabled = listBoxCustomers.SelectedIndex > -1;
    }
}

【讨论】:

    【解决方案2】:

    这是删除所有具有特定 id 的客户的功能:

    private void RemoveCustomer(int id)
    {
        list.RemoveAll(c => c.customerId == id);
    }
    

    【讨论】:

    • 谢谢。我如何将它添加到我的代码中?
    • 您可以在buttonDeleteCustomer_Click 函数中调用此函数,只需将RemoveAll 指令复制粘贴到其中即可。
    • 好的,谢谢你试试。此外,当我将 RemoveCustomer 方法添加到 customer.cs 时,它在列表中出现错误。它说名称“列表”在当前上下文中不存在。我该如何解决?
    • list 是您在此处定义的变量:List&lt;Customer&gt; list = new List&lt;Customer&gt;();。我不知道你在复制这一行时做错了什么,因为我不认识你 customer.cs 文件。
    • 我希望将函数放入 customer.cs 而不是 form.cs
    猜你喜欢
    • 2012-09-20
    • 1970-01-01
    • 2018-01-03
    • 1970-01-01
    • 2021-01-24
    • 1970-01-01
    • 2023-03-03
    • 2018-05-09
    • 1970-01-01
    相关资源
    最近更新 更多