我已将变量定义为string
数组。我还有一个名为form4
的表单,在此表单上,我有1个文本框和1个组合框。
我在一个班级有这段代码:
public class food
{
public string[] name1 = new string [20];
public string[] name2 = new string [50];
public string[] name3 = new string [40] ;
public string[] name = new string [20];
public string[] type = new string [15];
//private const int total = 11;
public int[] calories_ref;
public int i, i2;
public Form4 form = new Form4();
public food(string[] Name1, string[] Name, string[] Type1, int[] kcal)
{
name1 = Name1;
name = Name;
type = Type1;
calories_ref = kcal;
}
public food()
{
}
private void settypes()
{
type[0] = "Bebidas não alcoólicas";
type[1] = "Bebidas Alcóolicas";
type[2] = "Fruta";
type[3] = "Hidratos de Carbono";
type[4] = "Peixe";
type[5] = "Carne";
type[6] = "Cereais";
type[7] = "Lacticínios";
type[8] = "Óleos/Gorduras";
type[9] = "Leguminosas";
type[10] = "Legumes";
for (int i = 0; i < type.Length; i++)
{
form.comboBox1.Items.Add(type[i]);
}
}
在
settypes()
方法中,我定义了各种食物,更确切地说是食物轮。如何将这些值用作form4
组合框中的项目? 最佳答案
您不应该在Form4
类中存储food
对象。每次创建Form4
对象时,您的代码都会创建一个全新的food
。如该行所示:
public Form4 form = new Form4();
实际上,这实际上不会显示在屏幕上,因为您除了对
ComboBox
添加项目外,对表单不执行任何其他操作,这也不会显示在屏幕上。即使将其显示在屏幕上,您仍然会收到类似于以下内容的错误:
Form4.comboBox1 is inaccessible due to its protection level
这是由于
ComboBox
是在内部使用私有访问修饰符创建的。 (有关更多详细信息,请参见http://msdn.microsoft.com/en-us/library/ms173121.aspx)。您需要做的是通过将
Form4
传递给food
对象上与该示例类似的方法(在您的ComboBox
中),使现有的ComboBox
要求food
对象填充其Form4
。代码而不是您的food
代码):private void Form4_Load(object sender, EventArgs e)
{
food f = new food(); //or however you wanted to create the object
f.AddTypesToComboBox(this.comboBox1);
}
AddTypesToComboBox
方法将在您的food
对象中定义如下:public void AddTypesToComboBox(ComboBox box)
{
for (int i = 0; i < type.Length; i++)
{
box.Items.Add(type[i]);
}
}
另外,由于您的
ComboBox
数组未填充数据,因此该函数实际上不会向type
添加任何内容。您需要像这样在settypes();
对象的构造函数中调用food
:public food(string[] Name1, string[] Name, string[] Type1, int[] kcal)
{
settypes();
name1 = Name1;
name = Name;
type = Type1;
calories_ref = kcal;
}
public food()
{
settypes();
}
您将需要从变量声明部分中删除
public Form4 form = new Form4();
,以及从您的settypes()
方法中删除以下内容:for (int i = 0; i < type.Length; i++)
{
form.comboBox1.Items.Add(type[i]);
}
您的
settypes()
应该只将数据填充到数组中,而不要尝试将其添加到ComboBox
中。