我在一个方法中有这个代码,我每秒在一个计时器中调用该方法:
data = new List<string>();
data.Add("Gpu Temeprature --- " + sensor.Value.ToString());
listBox1.DataSource = null;
listBox1.DataSource = data;
listBox1.Invalidate();
它首先每秒更新列表框中的一个值作为一个项目。现在我想在第二行添加一个新项目,这样它们都会每秒更新一次,所以在计时器事件中我调用另一个方法,里面有这个代码:
// data = new List<string>();
data.Add("Cpu Temeprature --- " + sensor.Value.ToString());
listBox1.DataSource = null;
listBox1.DataSource = data;
listBox1.Invalidate();
如果我将使用 data = new List(); 在第二种方法中,它将两个项目放在列表框中的相同位置。如果我不使用此数据 = new List(); 然后第二个会一直闪烁,每一秒都会闪烁,而且看起来不太好。
这是定时器事件:
private void timer2_Tick(object sender, EventArgs e)
{
if (tempCpuValue >= (float?)nud1.Value || tempGpuValue >= (float?)nud1.Value)
{
soundPlay = true;
blinking_label();
NudgeMe();
}
else
{
soundPlay = false;
stop_alarm = true;
}
cpuView();
gpuView();
}
cpuView() 和 gpuView() 是我在计时器中调用的两个方法,用于更新列表框。
我还有另外两个 listBox 事件:
private void listBox1_MeasureItem(object sender, MeasureItemEventArgs e)
{
e.ItemHeight = 25;
}
private void listBox1_DrawItem(object sender, DrawItemEventArgs e)
{
if (e.Index == -1)
{
}
else
{
ColorText.ColorListBox(data, e);
}
}
ColorText 是在一个新的类中,我在其中删除了列表框中的项目。