WinForm+C#小案例--->情侣版抽奖小游戏

SiamFC++笔记 SiamFC++: Towards Robust and Accurate Visual Tracking with Target Estimation Guidelines 文章根据这些思路:引入分类和目标状态估计分支(G1),无歧义的分类得分(G2),无先验知识的跟踪(G3)和评估质量得分(G4)来设计SiamFC ++。 SiamRPN ++和SiamFC ++的比较(红色部分代表得分高的区域): guide: G1 : 分类和状态估计任务的分离:分类任务将目标从干扰物和背景中分类出来,目标状态 阅读详情

创建 Winform 项目并设计界面

编写代码实现切换逻辑

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace 抽奖小游戏
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            // 关闭跨线程安全检查(快速实现,若需规范可改用Invoke,后面有说明)
            Control.CheckForIllegalCrossThreadCalls = false;
            // 建议:设置Label样式(居中、放大字体,情侣版更美观)
            label1.Font = new Font("微软雅黑", 12F, FontStyle.Bold);
            label1.AutoSize = true;
            label1.TextAlign = ContentAlignment.MiddleCenter;
            label1.Dock = DockStyle.None;
        }

        // 情侣专属奖品列表(含空奖,可自由修改/增减)
        string[] prizes = {
            "电影票2张(任选影片)",
            "奶茶双人套餐",
            "清空购物车(≤200元)",
            "亲手做一顿爱心晚餐",
            "周末短途旅行1次",
            "口红1支(你选色号)",
            "游戏陪玩2小时",
            "拥抱+亲亲奖励",
            "谢谢参与,下次给你大惊喜~", // 空奖
            "专属按摩服务30分钟",
            "零食大礼包1份",
            "谢谢参与,今晚洗碗我包了~", // 空奖
            "定制情侣钥匙扣1对",
            "奶茶免单1杯",
            "谢谢参与,明天带你吃早餐~",  // 空奖
            "双人DIY手工银戒1对(刻专属暗号)",
            "帮你洗袜子1周(承包所有臭袜子)",
            "情侣写真拍摄1套(含精修10张)",
            "谢谢参与~ 今晚的水果我切好喂你吃",
            "按摩服务1小时(肩颈+腰背全放松)",
            "情侣保温杯1对(刻名字缩写)",
            "深夜压马路+吃路边摊(全程我买单)",
            "下次补你大惊喜!现在先给个亲亲奖励",
            "专属发型师服务(我帮你吹头发+编发)",
            "暖手宝1个(冬天我帮你捂热)",
            "一起拼情侣拼图(1000片,拼完裱起来)",
            "谢谢参与~ 明天我早起做早餐",
            "情侣手链1对(磁吸款,分开会想念)",
            "早餐投喂服务3天(起床就有热乎的)",
            "星空露营1晚(带帐篷+烧烤+看星星)",
            "虽然没中大奖,但我会多抱你5分钟",
            "笔记本1本(我写满情话给你)",
            "游戏上分服务(帮你打10颗星)",
            "打卡网红餐厅(你选店,我买单)",
            "谢谢参与~ 今晚的垃圾我倒,碗我洗",
            "毛绒玩偶1个(替我陪你睡觉)",
            "情侣瑜伽体验课1节(零基础友好)",
            "泡脚服务20分钟(加艾草+帮你擦脚)",
            "定制情侣手机壳1对(印合照)",
            "惊喜正在加载中,下次一定中大奖!"
        };

        private Thread drawThread; // 抽奖线程
        private bool isDrawing = false; // 抽奖开关(true=滚动,false=停止)
        private readonly Random random = new Random(); // 随机数对象(避免重复)

        // 开始/停止抽奖按钮
        private void button1_Click(object sender, EventArgs e)
        {
            if (!isDrawing)
            {
                // 启动抽奖:新建线程并开始滚动
                isDrawing = true;
                drawThread = new Thread(ShowPrize);
                drawThread.IsBackground = true; // 设为后台线程,关闭窗体时自动退出
                drawThread.Start(prizes);
                button1.Text = "停止抽奖";
                label1.Text = "抽奖中..."; // 滚动时提示
            }
            else
            {
                // 停止抽奖:关闭开关,线程自动退出循环
                isDrawing = false;
                button1.Text = "开始抽奖";
            }
        }

        // 线程执行:循环滚动显示奖品
        private void ShowPrize(object obj)
        {
            string[] prizeList = obj as string[];
            if (prizeList == null || prizeList.Length == 0)
            {
                label1.Text = "暂无奖品";
                return;
            }

            // 循环滚动,直到开关关闭
            while (isDrawing)
            {
                // 随机抽取1个奖品(含空奖)
                int randomIndex = random.Next(prizeList.Length);
                string currentPrize = prizeList[randomIndex];

                // 显示当前滚动的奖品
                label1.Text = currentPrize;

                // 控制滚动速度(50毫秒/次,比原来快,更有抽奖感,可调整)
                Thread.Sleep(50);
            }
        }

        // 窗体关闭:安全终止线程
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            // 关闭抽奖开关,让线程自然退出(比Abort()安全,避免资源泄漏)
            isDrawing = false;
            // 等待线程结束(最多等500毫秒,防止卡死)
            if (drawThread != null && drawThread.IsAlive)
            {
                drawThread.Join(500);
            }
        }
    }
}

效果演示

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

做形态学方法的团队_“设计形态学”与“第三自然” 文/邱松(清华大学 美术学院)摘要:“设计形态学”是基于“形态学”研究的设计基础学科。“形态”既是该学科研究的主体,又是与其它学科相连接的“纽带”。实际上,不管是供养我们的地球家园,还是神秘莫测的浩瀚宇宙,均由数量纷繁、千姿百态的“形态”构筑而成。形态通常被分成两大类:一类是源于“第一自然”的“自然形态”;另一类是来自“第二自然”的“人造形态”。而这两类形态正是“设计形态学”研究的两条... 阅读详情

相关推荐

手把手教你用Ubuntu 22.04的附加驱动工具安装NVIDIA显卡驱动(含常见错误修复)

本文详细介绍了在Ubuntu 22.04系统上,如何通过图形化的“附加驱动”工具安全、便捷地安装NVIDIA显卡驱动。内容涵盖从准备工作、禁用默认的nouveau驱动、图形界面安装实操,到安装后的验证(如使用nvidia-smi命令),并提供了安装失败黑屏、亮度调节失效等常见问题的深度解决方案,帮助用户彻底搞定驱动安装难题。

weixin_29248653的博客 602

第6章第4节:自定义分词器

本节详解Elasticsearch自定义分词器,解析analyzer三段式结构(char_filter→tokenizer→filter),掌握常用组件如ik_max_word、synonym_graph、ngram等。通过_analyze API调试分词效果,实现“索引时扩展同义词、搜索时不带”的生产级方案,提升中文搜索与智能提示体验。

啊渊的专栏 777

MediaCodec视频解码流程详解及参考demo

本文主要讲解mediacodec的视频解码流程,及demo参考例子。

分享音视频技术 7876

C#使用opencv和Yolo模型识别车牌号

本文基于OpenCVSharp与OnnxRuntime,结合YoloV8n-pose_plate模型(检测车牌位置)和OCR模型(识别车牌文字),实现高效车牌识别。通过预处理、目标检测、NMS筛选及文字识别流程,最终输出车牌框位置与识别文本。代码封装良好,支持自定义路径与置信度阈值,具备实际应用价值。

lweiyue的专栏 180

【Linux内核】Linux内核裁剪完全指南:从理论到实战的系统优化

在嵌入式设备、专用服务器和物联网系统日益普及的今天,如何让Linux系统在资源受限的环境中高效运行成为开发者必须面对的问题。Linux内核裁剪正是解决这一问题的关键技术,它通过移除不必要的内核组件,打造出更精简、更安全、更高效的自定义操作系统。本文将系统全面地介绍Linux内核裁剪的完整流程和实用技巧,帮助您掌握这一核心技能。Linux内核裁剪是一项结合技术知识与实践经验的系统工程。明确需求:裁剪前必须清晰了解目标系统的硬件配置和功能需求。循序渐进:采取小步修改、反复测试的策略,避免一次性大幅修改。

撬动未来的支点的专栏 1390

Vmware虚拟机一打开就蓝屏解决方法

Vmware虚拟机一打开就蓝屏解决方法 问题: 一打开Vmware虚拟机就蓝屏,如下图所示: 解决方法1: 启用和关闭windows功能(对话框)——>虚拟机平台(选项打对勾,默认没勾选)——>确定后重启——>再进应该就好了。 解决方法2: ①.查看电脑中的Hyper-V服务是否关闭 1.打开控制面板-程序-程序和功能 2.双击启用或关闭Windows功能 3.把Hyper-V前面的勾去掉 如果后期发下没有反应,或者电脑本身Hyper-V的服务没有打开,可以先打开在关闭,试

m0_55901666的博客 26万+

C# NAFNet 图片去模糊

基于NAFNet与ONNX Runtime的C# WinForms图片去模糊工具,支持DirectML GPU加速与CPU回退,实现一键去模糊、大图分块处理、并排对比及拖拽打开。具备高DPI适配、自绘圆角界面、命令行批量处理等功能,适用于Windows 10/11系统,可灵活配置模型路径与分块大小,解决显存不足与边缘接缝问题。

hixiong123的博客 262

深信服 SANGFOR 设备密码恢复和配置备份恢复

、恢复密码 当我们拿到一台设备要去配置管理的时候,首先是要确认设备的登录IP,其次就是确认设备控制台登录密码。不知情的情况下如何找到设备的登录IP,请参考文档: http://bbs.sangfor.com.cn/forum.php?mod=viewthread&tid=9484 下文中提到的关于“网关升级客户端”的一些功能,也请参考此文档。 那么恢复密码,大家都知道有2种方法:U盘恢复密码、交叉线恢复密码。 1、U盘恢复密码 注意:仅恢复admin密码,不影响配置。 U盘恢复密码的前

李先生在闯荡江湖 1万+

使用C#代码提取、修改或删除 Excel 中的超链接

通过 C# 和 VB.NET,可以方便地管理 Excel 文件中的超链接,包括提取、修改和删除等操作。提取超链接: 获取工作表中的超链接集合,读取每个超链接的地址和类型,并将相关信息保存到文本文件中。修改超链接: 更新超链接的显示文本和目标地址,确保链接信息准确。删除超链接: 移除指定的超链接,同时可以选择保留单元格中的原有显示文本,或清除单元格的全部内容。这些操作可以帮助开发人员更高效地管理 Excel 文档中的链接信息,减少重复的手动操作,也便于在数据迁移、文档维护和自动化报表处理等场景中使用。

2501_93070778的博客 236

宋浩线性代数笔记

Miao-A-SongHao-Linear-Algebra-Notes bilibili 宋浩老师 “惊叹号” 系列 《线性代数》网课 笔记及时间点目录 Github项目地址:https://github.com/cy69855522/Miao-A-SongHao-Linear-Algebra-Notes ???? 前言 我发现吧,线代没记笔记真不行。 浩浩学习,天天向上。数学网课推荐????宋浩老师的免...

Knife丶小刀博客 4万+

【LCMM实战指南】从增长混合模型到潜在类别轨迹分析的纵向数据建模

本文深入解析了LCMM(潜在类别混合模型)在纵向数据建模中的应用,对比了LCGA与GMM的核心差异与选择策略。通过R语言lcmm包的实战演练,详细展示了从数据模拟、模型拟合、类别数选择到结果解读的全流程,为识别数据中不同的发展轨迹亚型提供了系统指南。

weixin_29070861的博客 380

C#: 控件不支持透明的背景色

把透明度固定为255。

海天鹰 46

SerDes系列之 SSC扩频时钟技术

扩频时钟,又称展频(SSC-Spread Spectrum Clocking),当前PCIE、DDR、USB等几乎所有的高速接口都支持SSC的功能。电子工程师在日常的电气测试中经常与之接触,在电磁传导和辐射发射验证过程中,经常需要使用到芯片的SSC功能,它的物理表现形式,就是信号的比特率会在一个很小的范围内浮动,多见于周期性变化的时钟信号。

一只豌豆象的博客 3442

基于 OPC UA 的半导体工厂化学气体传输 SCADA 监控系统:架构设计与 C# MVVM 实现

本文提出一套面向半导体化学气体传输的可演进SCADA系统,基于OPCUA统一信息模型与C#+WPF+MVVM技术栈,实现从气源到机台的全链路实时监控、安全联锁与追溯。通过资产树建模、分层解耦架构与标准对齐(SEMI E30/E95/S2),确保系统可扩展、可维护、可审计,满足高安全、高可靠要求,支持快速落地与持续演进。

ponygame的博客 336

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

如何使用C#代码清理 Excel 表格中的空白行与空白列

通过 C# 代码,可以自动检查并删除 Excel 工作表中的空白行和空白列。利用IsBlank属性判断行或列是否为空,再分别调用和方法,即可完成清理操作。与手动逐行、逐列检查相比,这种方式更适合处理包含大量数据的 Excel 文件,能够减少重复操作,提高数据整理效率,使工作表保持整洁、清晰。在实际使用中,建议从工作表的末尾向前遍历并删除空白行和空白列,避免删除操作改变索引位置,影响后续检查。

2501_93070778的博客 201

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

使用C#代码在 Word 中设置行距和段落间距

通过 C# 代码,可以灵活调整 Word 文档中的行间距和段落间距,从而改善文档的整体排版效果。设置段前间距: 使用属性调整段落前方的空白距离。设置段后间距: 使用属性调整段落后方的空白距离。设置行间距: 使用属性控制同一段落中各行文本之间的距离。合理设置这些间距,不仅可以提高 Word 文档的可读性,还能优化页面空间利用率。这种方式适用于批量格式调整、自动化文档生成以及统一文档排版等场景。

2501_93070778的博客 185

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Avalonia 设备监测实战设计|高频采样怎么接到实时曲线、热力图和 3D 视图?

设备每秒推来的采样批次和页面刷新的节奏通常不同。把每条采样直接推给 UI,会让绘制次数跟着输入速率增长。用做 Avalonia 监测页面时,可以把采集、显示窗口和视图更新拆开,再用测点 ID 把三个视图串起来。

2501_91602431的博客 49

04 · Diagram —— 示意图与接线图

CCDiagramDiagramDiagrams把一组"节点 + 连线"画出来:机车各柜体之间的连线关系、系统拓扑、信号流向。节点是矩形框(可带标题),连线可以带箭头。

hdjsjb的博客 470

C#: (float) RegistryKey.GetValue() 报错 System.InvalidCastException: 指定的转换无效

RegistryKey.GetValue() 类型是 object,首先要转为 string,再 float.Parse(string)。

海天鹰 38

C# 14 实战三连:field 关键字、extension 成员与 null 条件赋值

NET 10 带来的 C# 14 不是一场 syntax earthquake,但里面藏着三件日常写码频率极高的改进。这篇不讲新闻稿,只讲用起来什么感觉、编译器在背后做了什么、以及哪里会静默踩坑。

dotnethello的博客 187

OnlyOffice+poi-tl:把 Word 模板变成可填写、可生成的合同系统

合同表单已经填过主体、金额和日期,为什么还要在Word里再改一遍?以RuoYi Office的真实教学案例,拆解七个字段从模板配置到正文生成、在线编辑和回存的过程,说明poi-tl与OnlyOffice如何分工,以及字段取值、文件缓存和模板版本中的关键设计。

RuoYi Office是基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue3 + Vben Admin + Uniapp 构建的中小企业全业务办公一体化平台,涵盖OA 协同 506

C# 编译器前端深入(二):词法、语法、红绿树与错误恢复

章节编号沿用原单篇文档(如 §3.6 在第二篇、§7.3 在第三篇);roslyn-src本篇承接第一篇:如果还没读过第 0–2 章(概念最小集、csc→语法树的数据流),建议先读。

大坡3D软件开发 155

C#标准程序

包含所有界面的控件。

备忘 275

dnSpy 命令行反编译 C# DLL(实测可用)

均反编译成功,退出码 0,类型与成员签名还原正常。)崩溃,暂不可用,优先使用上述 dnSpy 方式。,但运行即触发 CET 断言(

大坡3D软件开发 205

Java 批量提取 Word 文档中的图片并保存到本地

使用 Java 提取 Word 文档中的图片,可以省去逐张复制、保存的操作,尤其适合处理包含大量插图的报告、产品手册和技术文档。本文通过遍历 Word 文档对象,定位图片并获取其字节数据,再将图片批量保存到本地。整个过程不需要 Microsoft Word,也不涉及图片格式转换,适合用于文档图片整理和自动化处理。

SunnyDays1011的博客 257

C# 15 类型系统补完:Union Types 与 Closed Hierarchies 让编译器替你数清分支

针对 switch 漏分支与跨程序集继承破坏封闭性的问题,给出 union 声明、closed 封闭层级与编译期穷尽校验的组合方案,附 AST 求值落地示例与排错清单。

2301_78967866的博客 391
上一篇: WinForm+C#小案例--->年会抽奖人名小程序
下一篇: C#小案例-->交替吃苹果线程同步案例
MM_MS
博客等级 码龄1年 58粉丝 100原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MM_MS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值