WinForm+C#小案例--->爱心跑马灯演示

爱心跑马灯演示:

实现这个案例我们可以分为3个步骤

效果演示:

步骤 1:创建 Winform 项目并设计界面

  1. Label 控件 :命名为 lblMarquee
  2. Timer 控件 :命名为 timerMarquee

步骤 2:设置控件属性

  • lblMarquee 属性 :
    • Text:可以先清空,我们会在代码中设置
    • Font:选择一个合适的字体和大小,让爱心显示得更清楚
    • AutoSize:设置为 True
    • TextAlign:设置为 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();
        }
    }
}

希望对大家有所帮助。感谢大家的关注和点赞。

相关推荐
茉莉玫瑰花茶6 分钟前
GO [ 类型 ]
开发语言·数据库·golang
梅雅达编程笔记11 分钟前
02_BeautifulSoup网页数据提取
开发语言·爬虫·python·beautifulsoup·数据采集
Escalating_xu15 分钟前
【C 语言】深入理解指针(3):字符指针、数组指针、二维数组传参、函数指针与转移表
java·c语言·开发语言
可涵不会debug29 分钟前
C++ std::bind 实战教程:线程池、回调场景全覆盖
linux·开发语言·c++
不正经的码狗32 分钟前
Java 开发环境搭建与 Eclipse 使用速通教程
java·开发语言·eclipse
阿钱真强道1 小时前
24 嵌入式操作系统 | 项目启动与环境准备(PyQt5 / Flask 两个“最小可跑“)
开发语言·qt·flask·架构设计·协议契约
霸道流氓气质1 小时前
AI模型幻觉检测与抑制完全指南:从规则引擎到RAG对比的Java生产级实战
java·开发语言·人工智能
前端 贾公子1 小时前
LangChain核心组件 == 提示词(Prompts)
开发语言·c#
niucloud-admin1 小时前
JAVA V6 多商户商城 开发文档——手机端前端
java·开发语言·前端
茉莉玫瑰花茶1 小时前
GO [ 并发 ]
开发语言·后端·golang