我正在使用Timer控件,我希望将间隔设置为等于ListBox中对象的Proc_BurstTime。我无法弄清楚如何解决这个问题。
问题是,我在ListBox中有多个不同的对象;我想要做的是让程序通过列表中每个对象的Proc_BurstTime。
例如,我有一个ProgressBar。 ListBox中有5个具有这些Proc_BurstTime值的内容(以ms为单位): 5000 4000 1000 7000 2000 程序应该转到ListBox中的第一个对象,将进度条设置为“加载”X秒(Proc_BurstTime)。第一个将是5000毫秒(5秒),进度条将在5秒内从0变为100,一旦完成,它将进入下一个,4000毫秒;等等。
我的问题是:
timer1.Interval = initial_ProcessList.Items[0].Proc_BurstTime;
这是我得到的错误
*'object'不包含'Proc_BurstTime'的定义,也没有扩展方法'Proc_BurstTime'接受类型'object'的第一个参数(你是否缺少using指令或汇编引用?)*
这是我的结构和初始化:
struct process
{
public int Proc_Id;
public int Proc_BurstTime;
public int Proc_Priority;
public override string ToString()
{
return "ID: " + Proc_Id.ToString() + " Time: " + Proc_BurstTime.ToString() + " Prior: " + Proc_Priority.ToString();
}
};
readonly process[] ProcessList = new process[]
{
new process{ Proc_Id = 1, Proc_BurstTime = 5000, Proc_Priority = 1},
new process{ Proc_Id = 2, Proc_BurstTime = 4000, Proc_Priority = 2},
new process{ Proc_Id = 3, Proc_BurstTime = 1000, Proc_Priority = 3},
new process{ Proc_Id = 4, Proc_BurstTime = 7000, Proc_Priority = 4},
new process{ Proc_Id = 5, Proc_BurstTime = 2000, Proc_Priority = 5}
};
这就是我向ListBox添加内容的方式:
private void Form1_Load(object sender, EventArgs e)
{
foreach (var p in ProcessList)
{
initial_ProcessList.Items.Add(p);
}
}
答案 0 :(得分:2)
您必须将其转换为适当的类型:
timer1.Interval = ((process)initial_ProcessList.Items[0]).Proc_BurstTime;
或者,如果您必须访问多个属性,您可能希望这样做:
process proc = (process)initial_ProcessList.Items[0];
timer1.Interval = proc.Proc_BurstTime;
请注意,如果您循环遍历ListBox
中的进程,则可以方便地在foreach
- 循环的头部声明迭代器的类型:
foreach (process proc in initial_ProcessList.Items)
{
timer1.Interval = proc.Proc_BurstTime;
...
}