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 ...
随机推荐
- mac下安装ionic
我的mac系统是EI Capitan,如下图所示. ionic是一个跨平台的框架,能够提供高效hybrid app的开发,而且性能接近于原生态,具体请参考:http://ionicframework. ...
- 牛客网Java刷题知识点之OSI七层参考模型 和 TCP/IP五层参考模型
不多说,直接上干货! 福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号: 大数据躺过的坑 Java从入门到架构师 人工智能躺过的坑 ...
- 60分钟内从零起步驾驭Hive实战学习笔记(Ubuntu里安装mysql)
本博文的主要内容是: 1. Hive本质解析 2. Hive安装实战 3. 使用Hive操作搜索引擎数据实战 SparkSQL前身是Shark,Shark强烈依赖于Hive.Spark原来没有做SQL ...
- HDU 4460 Friend Chains
Problem Description For a group of people, there is an idea that everyone is equals to or less than ...
- Linux VFS机制简析(二)
Linux VFS机制简析(二) 接上一篇Linux VFS机制简析(一),本篇继续介绍有关Address space和address operations.file和file operations. ...
- hash扩展攻击本地实验
记录一下自己对hash扩展攻击的一些理解,hash扩展攻击主要应用于身份认证,比如对于成功登录的用户可以赋予其一个采用hsah算法加密的cookie值,其中含有未知的密钥. 此后每次在服务器端验证此c ...
- html和css(一)
简单点来说html和css就是一起连在使用,有了html和css会使网页更加有活力,看起来更加的好看. html是做关于网页标签这一块相当于骨架,更深的还需要另一个来完成,那就是css,相当于向里面加 ...
- lxml模块(应用xpath技术)
一.lxml介绍 第三方库lxml是第一款表现出高性能特征的python xml库,天生支持Xpath1.0.XSLT1.0.定制元素类,甚至python风格的数据绑定接口.lxml是通过Cpytho ...
- mysql四:数据操作
一.介绍 MySQL数据操作: DML ======================================================== 在MySQL管理软件中,可以通过SQL语句中的 ...
- 【转载】图解MySQL MSI方式安装方法
********************************** 后来发现图片是百度的被封了.有空再换下吧. 一般百度经验这样的链接是不会失效的,大家可以百度查看. *************** ...