C# 从另一种形式在 comboBox 中添加新值

C# add new value in comboBox from another form

我正在尝试通过另一种形式在组合框中添加用户选择的新值,用户必须在其中将所需值写入文本框。我还想检查如果该值已经存在,则显示错误消息并且不添加任何值。

在要更新的组合框的表单中,我写了这个方法:

public ArrayList getProducts() //to get all the products into an ArrayList and check if product to add already exists, but i get a cast error
    {
        return (ArrayList)cbbProducts.Items.Cast<ArrayList>();
    }
    
    //this is made in order to add the product to the combobox
    public void addProductInCbb(string newProduct)
    {
        cbbProducts.Items.Add(newProduct);
    }

这里我遇到了第一个错误:我无法将所有值正确地转换为 ArrayList。在 addProduct 表单中,与“确认”按钮相关,我有:

private void btnConfirmNewProduct_Click(object sender, EventArgs e)
    {   
        Order o = new Order(new Form1()); //don't know if access is made correctly...
        String newProduct = txtNewProduct.Text;
        bool found = false;
        ArrayList products = o.getProducts(); //cast error

        foreach(String product in products)
        {
            if (product.Equals(newProduct)) found = true;
        }
        if (!found)
        {
            o.addProductInCbb(newProduct);
            MessageBox.Show("Success!","", MessageBoxButtons.OK, MessageBoxIcon.Information);
        //}  
        //else MessageBox.Show("Error! Product already exists", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            
    }

第二个问题来了:如果我尝试评论所有块以检查产品是否存在,它无论如何都不会添加它,所以在这个意义上可能存在第二个错误。

在 form1 中在 button1_Click 事件中:

 private void button1_Click(object sender, EventArgs e)
    {
        Form2 form2 = new Form2(comboBox1.SelectedItem.ToString());
        if (!form2.IsClose)
        {
            form2.ShowDialog();
        }
    }

在 form2 中添加代码

public partial class Form2 : Form
{
    public bool IsClose;
    public Form2(string Item)
    {
        InitializeComponent();
        AddNewItem(Item);
    }
    private void AddNewItem(string Item)
    {
        if (!comboBox1.Items.Contains(Item))
        {
            comboBox1.Items.Add(Item);
        }
        else
        {
            MessageBox.Show("error message is displayed and no value is added.");
            IsClose = true;
            this.Close();
        }
    }
}