0

这就是我在计时器滴答事件中使用它的方式:

private void timer1_Tick(object sender, EventArgs e)
        {
            memUsage = theMemCounter.NextValue();
            label1.Text = memUsage.ToString();
            Logger.Write("Memory Usage   " + memUsage.ToString());
            AppendText(richTextBox1, "Memory Usage   " + memUsage.ToString() + Environment.NewLine, Color.Red);
            cpuUsage = this.theCPUCounter.NextValue();
            label2.Text = cpuUsage.ToString();
            Logger.Write("Cpu Usage   " + this.cpuUsage.ToString());
            AppendText(richTextBox1, "Cpu Usage   " + cpuUsage.ToString() + Environment.NewLine, Color.Blue);
            Values.Add(cpuUsage);
            isProcessRunning();
            if (alreadyRun == true)
            {
                processValues.Add(cpuUsage);
            }

        }

这是 AppendText 函数:

public  void AppendText( RichTextBox box, string text, Color color)
        {
            box.SelectionStart = box.TextLength;
            box.SelectionLength = 0;

            box.SelectionColor = color;
            box.AppendText(text);
            box.SelectionColor = box.ForeColor;
        } 

如果在计时器滴答声中我不会使用 Environment.NewLine 那么我只会看到唯一的内存使用中的一行重复它自己。

如果我使用 Environment.NewLine 那么我每次都会看到内存使用情况和 cpu 使用情况下降到一个新行,例如:

内存使用率 --- 3 Cpu 使用率 --- 0.4565 内存使用率 --- 3.6 Cpu 使用率 --- 47

相反,我想查看一行内存使用情况和一行 cpu uage,并一遍又一遍地更新这两行,而不是为它们创建新行。

4

1 回答 1

0

如果您尝试仅更新 2 行,请尝试以下操作:

private void timer1_Tick(object sender, EventArgs e)
{
    richTextBox1.Text = "";
    // Add the rest of the code here
}

这样它将显示 2 行(内存和 cpu 使用情况),并且在打勾后,它将清除文本,然后设置这 2 行。这看起来好像正在更新。

希望这可以帮助!

于 2012-09-01T23:22:56.543 回答