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();
}
}
}
我正在尝试通过另一种形式在组合框中添加用户选择的新值,用户必须在其中将所需值写入文本框。我还想检查如果该值已经存在,则显示错误消息并且不添加任何值。
在要更新的组合框的表单中,我写了这个方法:
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();
}
}
}