我试图将List传递传递给Windows窗体,并且在此列表中添加记录时出错(请参阅代码)。列表中有3个参数:MacAddress(字符串),Port(int),数据包到达时的时间(DateTime)。我想每隔1秒刷新一次列表框中的列表。
class Listen
{
Form1 mainForm;
List<Tuple<string, int, DateTime>> list = new List<Tuple<string, int, DateTime>>();
public Listen(Form1 mainForm)
{
this.mainForm = mainForm;
}
public List<Tuple<string, int, DateTime>> GetList()
{
return list;
}
public void AddtoList(string MacAddr, int deviceNumber, DateTime dt)
{
//ERROR:No overload for method 'Add' takes 3 arguments
list.Add(MacAddr, deviceNumber, dt);
}
public void StartListen(string deviceNum)
{
...
AddtoList(MacAddr.ToString(), deviceNumber, DateTime.Now);
...
}
}
public partial class Form1 : Form
{
private Listen lis;
public Form1()
{
InitializeComponent();
lis = new Listen(this);
var devices = lis.GetDevices();
comboBox2.DataSource = devices;
}
public void PrintList()
{
lis = new Listen(this);
var list = lis.GetList();
for (int i = 0; i < list.Count; i++)
{
TimeSpan ts = DateTime.Now - list[i].Item3;
listBox1.Items.Add(list[i].Item1 + "Port: " + list[i].Item2 + "Timer: " + ts);
}
}
private void timer1_Tick(object sender, EventArgs e)
{
PrintList();
}
}
答案 0 :(得分:2)
如果您有类型列表,则必须提供该特定类型的实例。显然没有一种方法支持每种类型的所有可能的属性。但是请创建一个新的Tuple
:
list.Add(new Tuple<string, int, DateTime>(MacAddr, deviceNumber, dt));