winform 实现彩票功能
版权声明:本文为博主原创文章。未经博主同意不得转载。 https://blog.csdn.net/MrTraum/article/details/32702319
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTXJUcmF1bQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />
近期项目中要实现买彩票功能。功能已实现
不足之处请大神不吝赐教。学习进步
球的自己定义控件:
<pre name="code" class="csharp">public partial class Ball : UserControl
{
/// <summary>
/// 显示的数字
/// </summary>
private string _num;
[RefreshProperties(RefreshProperties.Repaint)]
[DefaultValue("")]
public string Num
{
get { return _num; }
set
{
this._num = value;
this.btnBall.Text = value;
}
}
/// <summary>
/// 球类型
/// </summary>
private int ballType = 1;
[Description("球类型 1 红球 2 蓝球")]
[RefreshProperties(RefreshProperties.Repaint)]
[DefaultValue("")]
public int BallType
{
get { return ballType; }
set { ballType = value; }
}
/// <summary>
/// 背景图片
/// </summary>
private Image background = Resources.lottery_no;
public Image Background
{
get { return background; }
set
{
this.btnBall.BackgroundImage = value;
background = value;
}
}
/// <summary>
/// 选中后的背景图片
/// </summary>
private Image selectedBackgroud;
public Image SelectedBackgroud
{
get { return selectedBackgroud; }
set
{
this.btnBall.BackgroundImage = value;
selectedBackgroud = value;
}
}
/// <summary>
/// 球的选中状态
/// </summary>
private bool _isSelected = false;
[Description("球是否选中")]
[RefreshProperties(RefreshProperties.Repaint)]
[DefaultValue("")]
public bool IsSelected
{
get { return _isSelected; }
set
{
_isSelected = value;
setBallView(value);
}
}
/**
* 字体颜色。默觉得黑色
*/
private Color ballFontColor = Color.Black;
public Color BallFontColor
{
get { return ballFontColor; }
set
{
this.btnBall.ForeColor = value;
ballFontColor = value;
}
}
public delegate void stateUpdate(Ball obj);
/// <summary>
/// 状态更新事件
/// </summary>
public event stateUpdate stateChange;
public Ball()
{
InitializeComponent();
this.Load += new EventHandler(Ball_Load);
this.btnBall.Click += new EventHandler(btnBall_Click);
}
private void setBallView(bool isTrue)
{
if (isTrue)
{
if (BallType == 1)
{
SelectedBackgroud = Resources.lottery_red;
BallFontColor = Color.White;
}
else
{
SelectedBackgroud = Resources.lottery_blue;
BallFontColor = Color.White;
}
}
else
{
if (BallType == 1)
{
SelectedBackgroud = Resources.lottery_no;
BallFontColor = Color.Red;
}
else
{
SelectedBackgroud = Resources.lottery_no;
BallFontColor = Color.RoyalBlue;
}
}
}
/// <summary>
/// 点击球事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void btnBall_Click(object sender, EventArgs e)
{
if (!IsSelected)
{
if (BallType == 1)
{
SelectedBackgroud = Resources.lottery_red;
BallFontColor = Color.White;
}
else
{
SelectedBackgroud = Resources.lottery_blue;
BallFontColor = Color.White;
}
IsSelected = true;
}
else
{
if (BallType == 1)
{
SelectedBackgroud = Resources.lottery_no;
BallFontColor = Color.Red;
}
else
{
SelectedBackgroud = Resources.lottery_no;
BallFontColor = Color.RoyalBlue;
}
IsSelected = false;
}
this.stateChange(this);
}
void Ball_Load(object sender, EventArgs e)
{
if (BallType == 1)
{
BallFontColor = Color.Red;
}
else
{
BallFontColor = Color.RoyalBlue;
}
this.Background = Resources.lottery_no;
}
}
2.填充球集合
/// <summary>
/// 常规红球集合
/// </summary>
private List<Ball> cRedBall = new List<Ball>();
foreach (Control item in pan_cg.Controls)
{
if (item is Ball)
{
if (item.Tag == null)
continue;
(item as Ball).stateChange += new Ball.stateUpdate(LotteryDoubleBallForm_stateChange);
switch (item.Tag.ToString())
{
case "1":
cRedBall.Add(item as Ball);
break;
case "2":
cBlueBall.Add(item as Ball);
break;
}
}
}
3、选择球触发事件
void LotteryDoubleBallForm_stateChange(Ball obj)
{
switch (obj.Tag.ToString())
{
case "1"://常规红球
if (obj.IsSelected)
{
if (!this.SelectedcRedBall.Contains(obj))
{
this.SelectedcRedBall.Add(obj);
}
}
else
{
if (this.SelectedcRedBall.Contains(obj))
{
this.SelectedcRedBall.Remove(obj);
}
}
break;
case "2":
if (obj.IsSelected)
{
if (!this.SelectedcBlueBall.Contains(obj))
{
this.SelectedcBlueBall.Add(obj);
}
}
else
{
if (this.SelectedcBlueBall.Contains(obj))
{
this.SelectedcBlueBall.Remove(obj);
}
}
break;
}
}
4机选红球
private void RamcRed(int count)
{
for (int i = 0; i < count; i++)
{
bool bl = true;
int ranIndex = 0;
while (bl)
{
Random ran = new Random();
ranIndex = ran.Next(1, 33);
Ball ball = this.cRedBall[ranIndex];
if (!this.SelectedcRedBall.Contains(ball))
{
this.SelectedcRedBall.Add(ball);
ball.IsSelected = true;
bl = false;
}
else
{
bl = true;
}
}
}
}
winform 实现彩票功能的更多相关文章
- WinForm DataGridView分页功能
WinForm 里面的DataGridView不像WebForm里面的GridView那样有自带的分页功能,需要自己写代码来实现分页,效果如下图: 分页控件 .CS: 1 using System; ...
- VB.NET Winform的一些功能实现
近段时间,开发的需要,需要写一个winform的程序.用VB.NET来写. 开发开始,需要实现一个窗体设为多文档界面 (MDI) 子窗体的容器.实现这个功能,开始找资料,得知设置一个属性:Form.I ...
- WinForm触摸屏程序功能界面长时间不操作自动关闭回到主界面 z
操作者经常会在执行了某操作后,没有返还主界面就结束了操作然后离开了,程序应该关闭功能窗体自动回到主界面方便下一位操作者操作.那么对于WinForm程序怎么实现呢? 实现原理:拦截Application ...
- winform实现Session功能(保存用户信息)
问题描述:在winform中想实现像BS中类似Session的功能,放上需要的信息,在程序中都可以访问到. 解决方案:由于自己很长时间没有做过winform的程序,一时间竟然手足无措起来.后来发现wi ...
- Winform 使用热键功能实现Ctrl+C和Ctrl+V复制粘贴功能
当我们使用winform控件的时候,会发现这些控件(比如Label)不支持Ctrl+c 复制和Ctrl+v 快捷键复制粘贴功能,如果我们需要实现这个功能改怎么做呢? 1. 首先我们创建一个winfor ...
- winform 记住密码功能
//登录 private void btn_Login_Click(object sender, EventArgs e) { //记住密码 ...
- 1.1 菜单管理 ——MyRapid WinForm快速开发框架-功能介绍
菜单表数据库设计 可以根据数据表取得树状目录,其中 版本和作者 可以分别对版本和修改人进行追溯 有兴趣的朋友可以尝试再添加一个收藏夹 也是比较常用的功能 这里我没有做这个功能 然后看下菜单编辑 ...
- winform记事本(基本功能)
本题主要考察各种控件的应用 using System; using System.Collections.Generic; using System.ComponentModel; using Sys ...
- winform中拖动功能实现技巧
实现的需求,我通过拖动选中的用户行放到左边的机构节点上,从而实现用户改变组织机构的关系 贴代码 private DataGridViewSelectedRowCollection sourceRowC ...
随机推荐
- 迪米特法则(Law of Demeter)LoD
using System; using System.Collections.Generic; using System.Text; namespace LawOfDemeter { //也叫Leas ...
- 图解DTS和PTS
由于把视频编码成I,B,P等帧,如下图 假设现在有I,B,P帧,那么要传输和显示呢?? 如果按照显示顺序传输的话: 传输顺序就是I->B>P 当对B帧进行解码后,由于B帧无法单独显 ...
- Apache Beam的架构概览
不多说,直接上干货! Apache Beam是一个开源的数据处理编程库,由Google贡献给Apache的项目,前不久刚刚成为Apache TLP项目.它提供了一个高级的.统一的编程模型,允许我们通过 ...
- 九度oj题目1521:二叉树的镜像
题目1521:二叉树的镜像 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:2061 解决:560 题目描述: 输入一个二叉树,输出其镜像. 输入: 输入可能包含多个测试样例,输入以EOF ...
- windows下libcurl+openssl编译与使用配置
之前使用过libcurl, 编译也是最简单的版本, 不需要openssl, 即不需要支持https, 所以编译和使用都很正常. 但要使用openssl就很麻烦了, 我花了差不多两天去编译和调用, 记录 ...
- JavaScript数据类型 数据转换
JavaScript数据类型分为两种:原始类型和对象类型,原始类型有:number(数字).string(文本).boolean(布尔值).null(空).undefined(未定义):对象类型有:A ...
- C# 数据库连接增删改查
C# 连接数据库 using System.Data.sqlCliect; // 加在头 main函数里面用法(删) //连接字符串 string Connectionstring = "s ...
- vue——指令系统
指令系统,可以联想咱们的cmd命令行工具,只要我输入一条正确的指令,系统就开始干活了. 在vue中,指令系统,设置一些命令之后,来操作我们的数据属性,并展示到我们的DOM上. 在vue中提供了一套为数 ...
- LOJ#2552. 「CTSC2018」假面(期望 背包)
题意 题目链接 Sol 多年以后,我终于把这题的暴力打出来了qwq 好感动啊.. 刚开始的时候想的是: 设\(f[i][j]\)表示第\(i\)轮, 第\(j\)个人血量的期望值 转移的时候若要淦这个 ...
- 响应式 Web 设计 - Viewport 和手机变框变粗的问题
一个常用的针对移动网页优化过的页面的 viewport meta 标签大致如下: <meta name="viewport" content="width=devi ...