我有两个标签,例如第一个是:
温度现在是 -
第二个标签:
46c中
但是,如果有时候只是问题,温度是否会达到100,那么它应该是:
温度现在是 - 100c
然后100的c将超过另一个标签的“ - ”。所以,如果它的两个数字是好的,但如果它的三个数字超过另一个标签。
有没有办法计算或更新自动带有数字的标签,这样它会根据当前的数字位数和其他标签位置改变其位置,这样它们就不会得到另一个?
构造函数中的代码。
temperature_label = new Label();
textMode_label = new Label();
this.Controls.Add(textMode_label);
this.Controls.Add(temperature_label);
temperature_label.Location = new Point(260, 200);
temperature_label.Height = 250;
temperature_label.Width = 500;
temperature_label.ForeColor = Color.Red;
temperature_label.Font = new Font("Arial", 35, FontStyle.Bold);
temperature_label.Text = "200c";
textMode_label.Location = new Point(350, 200);
textMode_label.Height = 250;
textMode_label.Width = 500;
textMode_label.ForeColor = Color.Blue;
textMode_label.Font = new Font("Arial", 35, FontStyle.Bold);
textMode_label.Text = "The Temperature Now Is - ";
然后在计时器滴答事件中,我用值:
更新temperature_labelprivate void timer_Tick(object sender, EventArgs e)
{
Computer computer = new Computer();
computer.Open();
computer.GPUEnabled = true;
foreach (var hardwareItem in computer.Hardware)
{
if (hardwareItem.HardwareType == HardwareType.GpuNvidia)
{
foreach (var sensor in hardwareItem.Sensors)
{
if (sensor.SensorType == SensorType.Temperature)
{
sensor.Hardware.Update();
temperature_label.Text = sensor.Value.ToString()+ "c";
timer.Interval = 1000;
if (sensor.Value > 90)
{
Logger.Write("The current temperature is ===> " + sensor.Value);
button1.Enabled = true;
}
this.Select();
}
}
}
}
}
答案 0 :(得分:0)
您可以使用单个标签而不是两个标签,并在文本上执行string.Format。 使用标签的Tag属性来保存要格式化的文本,并在格式化后将其指定为标签文本。
这就是:
temperature_label = new Label();
this.Controls.Add(temperature_label);
temperature_label.Location = new Point(260, 200);
...
temperature_label.Tag = The Temperature Now Is - {0}C;
temperature_label.Text = "Fetching temperature...";
然后在你的tick-handler的内部循环中:
....
temperature_label.Text = string.Format(temperature_label.Tag, sensor.Value);
....
这只适用于无需正确对齐温度值的情况。