Nie*_*tte 1 c# arraylist visual-studio winforms
我想补充的对象DataPerLabel,以我Arraylist allData的代码如下DataPerLabel:
class DataPerLabel
{
public String labelName;
public String labelAdress;
public String dataType;
public DataPerLabel(String labelName, String labelAdress, String dataType)
{
this.labelName = labelName;
this.labelAdress = labelAdress;
this.dataType = dataType;
}
public String getLabelName()
{
return labelName;
}
public String getLabelAdress()
{
return labelAdress;
}
public String getDataType()
{
return dataType;
}
}
Run Code Online (Sandbox Code Playgroud)
在下面的代码中,我尝试将对象添加DataPerLabel到my arraylist:
submitButton.Click += (sender, args) =>
{
String label = textboxLabel.Text;
String adress = textboxAdress.Text;
String dataType = "hey";
if (buttonsLabelBool.Checked)
{
dataType = "Bool";
}
else if (buttonsLabelReal.Checked)
{
dataType = "Real";
}
else if (buttonsLabelInt.Checked)
{
dataType = "Int";
}
allData.Add(new DataPerLabel(label, adress, dataType));
};
Run Code Online (Sandbox Code Playgroud)
最后我尝试arrayList通过在a中显示它来读出textbox,请参阅以下代码:
private void test()
{
Button btn = new Button();
btn.Location = new Point(500,500);
btn.Text = "test";
btn.Click += (sender, args) =>
{
foreach (var item in allData)
{
//Display arraylist per object here
//Something like : item.getLabelName();
}
};
}
Run Code Online (Sandbox Code Playgroud)
我不确定我做错了什么,希望你能帮忙!
ArrayList存储一个列表System.Object.您需要将对象强制转换DataPerLabel为如下:
foreach (var item in allData)
{
((DataPerLabel)item).getLabelName();
}
Run Code Online (Sandbox Code Playgroud)
或者,你可以指定在foreach而不是数据类型var为 的JakubDąbek在评论中指出如下:
foreach (DataPerLabel item in allData)
{
item.getLabelName();
}
Run Code Online (Sandbox Code Playgroud)
更好的方法是使用通用列表/集合List<DataPerLabel>来存储数据,以便可以避免转换.
| 归档时间: |
|
| 查看次数: |
712 次 |
| 最近记录: |