版权声明:本文为博主原创文章。未经博主同意不得转载。 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 实现彩票功能的更多相关文章

  1. WinForm DataGridView分页功能

    WinForm 里面的DataGridView不像WebForm里面的GridView那样有自带的分页功能,需要自己写代码来实现分页,效果如下图: 分页控件  .CS: 1 using System; ...

  2. VB.NET Winform的一些功能实现

    近段时间,开发的需要,需要写一个winform的程序.用VB.NET来写. 开发开始,需要实现一个窗体设为多文档界面 (MDI) 子窗体的容器.实现这个功能,开始找资料,得知设置一个属性:Form.I ...

  3. WinForm触摸屏程序功能界面长时间不操作自动关闭回到主界面 z

    操作者经常会在执行了某操作后,没有返还主界面就结束了操作然后离开了,程序应该关闭功能窗体自动回到主界面方便下一位操作者操作.那么对于WinForm程序怎么实现呢? 实现原理:拦截Application ...

  4. winform实现Session功能(保存用户信息)

    问题描述:在winform中想实现像BS中类似Session的功能,放上需要的信息,在程序中都可以访问到. 解决方案:由于自己很长时间没有做过winform的程序,一时间竟然手足无措起来.后来发现wi ...

  5. Winform 使用热键功能实现Ctrl+C和Ctrl+V复制粘贴功能

    当我们使用winform控件的时候,会发现这些控件(比如Label)不支持Ctrl+c 复制和Ctrl+v 快捷键复制粘贴功能,如果我们需要实现这个功能改怎么做呢? 1. 首先我们创建一个winfor ...

  6. winform 记住密码功能

      //登录        private void btn_Login_Click(object sender, EventArgs e)        {            //记住密码    ...

  7. 1.1 菜单管理 ——MyRapid WinForm快速开发框架-功能介绍

    菜单表数据库设计 可以根据数据表取得树状目录,其中 版本和作者 可以分别对版本和修改人进行追溯 有兴趣的朋友可以尝试再添加一个收藏夹   也是比较常用的功能   这里我没有做这个功能 然后看下菜单编辑 ...

  8. winform记事本(基本功能)

    本题主要考察各种控件的应用 using System; using System.Collections.Generic; using System.ComponentModel; using Sys ...

  9. winform中拖动功能实现技巧

    实现的需求,我通过拖动选中的用户行放到左边的机构节点上,从而实现用户改变组织机构的关系 贴代码 private DataGridViewSelectedRowCollection sourceRowC ...

随机推荐

  1. Android耗时操作

    No subscribers registered for event class com.test.MessageEvent import de.greenrobot.event.EventBus; ...

  2. async/await 的一些知识 (死锁问题)

    博文 Don't Block on Async Code What is the purpose of "return await" in C#? Any difference b ...

  3. Spark on Yarn运行错误:Yarn application has already ended! It might have been killed or unable to launch application master

    Spark on Yarn模式运行错误: bin/spark-shell --master yarn --deploy-mode client #报错 ​ 查看8088页面上的工作日志 错误原因:在执 ...

  4. kafka配置文件中参数的限制

    在kafka的优化过程中,不断的调节配置文件中的参数,但是有时候会遇到java.lang.NumberFormatException这样的错误 比如socket.receive.buffer.byte ...

  5. 腾讯刘金明:腾讯云 EB 级对象存储架构深度剖析及实践

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 演讲者:刘金明 腾讯云存储业务中心副总监 背景:5月23-24日,以"焕启"为主题的腾讯"云+未来" ...

  6. 【Shell】按行读取文件内容

    方法1:while循环中执行效率最高,最常用的方法. function while_read_LINE_bottm(){ While read LINE do echo $LINE done < ...

  7. [转]Oracle ROWNUM用法和分页查询总结

    本文转自:http://blog.csdn.net/fw0124/article/details/42737671 ****************************************** ...

  8. Android的Overlay机制

    相关知识点的掌握: AAPT的使用和原理 编译脚本 参考:http://blog.sina.com.cn/s/blog_645b74b90101ojkc.html

  9. vba SpecialCells(Type,Value) 参数说明

    Range.SpecialCells 方法可以返回一个 Range 对象,该对象代表与指定类型和值匹配的所有单元格. 其语法如下: 表达式.SpecialCells(Type,Value) 其Type ...

  10. mysql四-2:多表查询

    一.介绍 本节主题: 多表连接查询 复合条件连接查询 子查询 准备表: #建表 create table department( id int, name ) ); create table empl ...