我的label.width正在消极

时间:2013-06-18 14:00:44

标签: c# winforms

我正在编写自己的图表,因为预定义的图表无法处理我想要使用的值类型。对于线条我使用不同宽度的彩色标签。 要打印图表我正在使用这种方法:

labelSize = new Size();
labelSize.Height = 35;
Size maxSize = new Size(214783647, 500);

labelSize.Width = Convert.ToInt32(ShiftPts[i + 1].timeint - ShiftPts[i].timeint);
Label l1 = new Label();
l1.MaximumSize = maxSize;
l1.BackColor = Color.Yellow;
Point LabelPoint = new Point(tempStartX, StartPositionY);
//Point LabelPoint = new Point(tempStartX, StartPositionY);
l1.Size = labelSize;
l1.Location = LabelPoint;
l1.Text = ShiftPts[i].Status;
tempStartX = tempStartX + labelSize.Width;

BoxLine.Add(l1);

tempStartX变量是int,您可以看到每个循环都会增加。这个变量的问题在于它因标签的宽度而变为负数。每当我尝试指定宽度超过390的东西时,宽度就会变为负值。为什么会这样?

1 个答案:

答案 0 :(得分:1)

如果ShiftPts[i + 1].timeint小于ShiftPts[i].timeint,则labelSize.Width将为负数。然后,将此值分配给tempStartX

由于这似乎是您减去的唯一地方,这可能是您的变量设置为负值的唯一原因。

另一种可能性是tempStartX已经是否定的。