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 ...
随机推荐
- Java基础19-封装、方法重载、构造方法(构造函数)
1.封装 封装就是把不想或者不该告诉别人的东西隐藏起来,把可以告诉别人的公开 做法:修改属性的访问权限来限制对属性的访问.并为每一个属性创建一对取值方法和赋值方法,用于对这些属性的访问 class D ...
- (转) shell实例手册
shell实例手册 1文件{ touch file # 创建空白文件rm -rf 目录名 # 不提示删除非空目录(-r:递归删除 -f强制)dos2uni ...
- 手指静脉细化算法过程原理解析 以及python实现细化算法
原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/8672489.html 文中的一些图片以及思想很多都是参考https://www.cnblogs ...
- C++ Memory System Part2: 自定义new和delete
在第一部分中,我们介绍了new / delete的具体用法和背后的实现细节,这次我们将构建我们自己的小型工具集,可以使用我们自定义的allocator类来创建任意类型的实例(或者实例数组),我们需要做 ...
- git win7 dos下设置代理
git config --global http.proxy http://username:pwd@my.you.com:port
- NetCDF 共享软件 中文
NetCDF 共享软件 转载 在 Models-3 模式中,使用的数据存取接口称为 I/O API,其实就是 NetCDF 文件格式.而由于我们需要了解 Models-3 输出档案的数据情况,因此 ...
- NBUT 1107——盒子游戏——————【博弈类】
盒子游戏 Time Limit:1000MS Memory Limit:65535KB 64bit IO Format: Submit Status Practice NBUT 110 ...
- CSS+DIV进度条
<style type="text/css"> .Bar { position: relative; width: 200px; /* 宽度 */ border: 1p ...
- tomcat一个IP绑定多个域名,不同域名访问不同的应用
修改conf文件夹下面的server.xml的Engine里面的内容即可原始内容如下: …… <Engine name="Catalina" defaultHost=&quo ...
- window 常用MySQL数据库命令总结
登录:cmd - mysql -uroot -p 创建数据库:CREATE DATABASE `tpcms` DEFAULT CHARACTER SET utf8 COLLATE utf8_gener ...