爱心跑马灯演示:
实现这个案例我们可以分为3个步骤
效果演示:

步骤 1:创建 Winform 项目并设计界面
Label控件 :命名为lblMarqueeTimer控件 :命名为timerMarquee
步骤 2:设置控件属性
lblMarquee属性 :Text:可以先清空,我们会在代码中设置Font:选择一个合适的字体和大小,让爱心显示得更清楚AutoSize:设置为TrueTextAlign:设置为MiddleCenter,让文本在 Label 内居中BackColor:可以设置一个背景色,方便观察
timerMarquee属性 :Interval:设为200(单位为毫秒,数值越小,切换越快)Enabled:设为True
步骤 3:编写代码实现切换逻辑
cs
using System;
using System.Windows.Forms;
namespace 跑马灯
{
public partial class Form1 : Form
{
// 用于记录当前实心爱心(♥)在字符数组中的位置索引
private int currentPosition = 0;
// 定义一个空的心形,用于填充其他位置
private const char EmptyHeart = '♡';
// 定义一个实心的心形
private const char SolidHeart = '♥';
public Form1()
{
InitializeComponent();
}
// 窗体加载事件
private void Form1_Load(object sender, EventArgs e)
{
UpdateMarqueeText();
}
/// <summary>
/// 根据当前位置更新Label的文本
/// </summary>
// 私有方法:UpdateMarqueeText()
// 作用:这是核心逻辑方法,专门用于根据 currentPosition 的值来构建并更新 Label 控件的显示文本
private void UpdateMarqueeText()
{
// 创建一个字符数组
char[] displayText = new char[21];
for (int i = 0; i < displayText.Length; i++)
{
// 三元运算符:条件 ? 表达式1 : 表达式2
//判断当前循环的索引i是否等于当前实心爱心的位置 currentPosition
displayText[i] = (i == currentPosition) ? SolidHeart : EmptyHeart;
}
// 将构建好的字符数组 displayText 转换为一个字符串
lblMarquee.Text = new string(displayText);
}
/// <summary>
/// 定时器 Tick 事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void timer1_Tick(object sender, EventArgs e)
{
// 移动到下一个位置
currentPosition++;
// 当爱心走到最后一个位置时,重置到第一个位置
if (currentPosition >= 21)
{
currentPosition = 0;
}
// 根据新位置更新显示的文本
UpdateMarqueeText();
}
}
}
希望对大家有所帮助。感谢大家的关注和点赞。