Для этого нужно иметь два элемента управления метками, но это не так уж сложно.Сначала создайте резервную метку и установите ее свойства так: label5
:
// A backup label for our scrolling label5
private Label label5_backup;
private void Form1_Load(object sender, EventArgs e)
{
label5.Text = "This is a scrolling label!";
// Set label5_backup to look like label5
label5_backup = new Label
{
Size = label5.Size,
Text = label5.Text,
Top = label5.Top,
Visible = false
};
Controls.Add(label5_backup);
timer2.Interval = 1;
timer2.Start();
}
Затем в событии Tick
, как только наш label5
начнет покидать прямоугольник клиента, установитенаша резервная метка на правильном расстоянии слева от формы, чтобы она начала появляться на другой стороне.И как только label5
полностью исчезнет с формы, установите его местоположение в соответствии с меткой резервной копии, а затем снова скрыте метку резервной копии.
Обратите внимание, что вы можете просто установить свойство Left
вместо созданияНовая Location
точка каждый раз, что немного упрощает код:
private void timer2_Tick(object sender, EventArgs e)
{
label5.Left++;
// If label5 starts to go off the right, show our backup on the left side of the form
if (label5.Right > ClientRectangle.Width)
{
label5_backup.Left = label5.Right - ClientRectangle.Width - label5.Width;
label5_backup.Visible = true;
}
// If label5 is all the way off the form now, set it's location to match the backup
if (label5.Left > ClientRectangle.Width)
{
label5.Location = label5_backup.Location;
label5_backup.Visible = false;
}
}
Кроме того, если вы хотите сделать прокрутку более плавной, только увеличивайте Left
на 1
каждый раз и уменьшайтеtimer2.Interval
до трети того, что было раньше (если оно уже не на 1
).