winform 实现彩票功能

最近项目中要实现买彩票功能,功能已实现
不足之处请大神指教,学习进步
球的自定义控件:
<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 实现彩票功能

时间: 2024-10-07 13:45:17

winform 实现彩票功能的相关文章

WinForm DataGridView分页功能

WinForm 里面的DataGridView不像WebForm里面的GridView那样有自带的分页功能,需要自己写代码来实现分页,效果如下图: 分页控件  .CS: 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.T

VB.NET Winform的一些功能实现

近段时间,开发的需要,需要写一个winform的程序.用VB.NET来写. 开发开始,需要实现一个窗体设为多文档界面 (MDI) 子窗体的容器.实现这个功能,开始找资料,得知设置一个属性:Form.IsMdiContainer,它默认值为False,没为True即可. 或者是form Load时添加一句程序: 接下来,又需要为窗体容器的背景设置颜色: Me.Controls(Me.Controls.Count - 1).BackColor = Me.BackColor

winform 记住密码功能

  //登录        private void btn_Login_Click(object sender, EventArgs e)        {            //记住密码            if (cb_remember.Checked == true)            { //把用户名和密码写入到程序运行目录的xtflz.dll文件中                WriteIni("My Section", this.tb_UserName.Tex

c# winform 实现打印功能(未完)

1.打印控件介绍(Document属性设置为PrintDocument1:ShowDialog()方法显示对话窗) PrintDialog控件(打印会话):用于选择打印机.选择要打印的页以及确定其他与打印相关的设置. PrintPreviewControl控件(打印预览控制):用于按文档打印时的外观显示文档.(通常只有在希望编写自己的打印预览用户界面时才使用) PrintPreviewDialog控件(打印预览会话):用于显示文档打印后的外观.(通常UseAntiAlias属性设为true,开启

Winform——计算器局部功能(+-*/%)

namespace 计算器2._0 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private bool Isok = true;//记录刚刚是否点过运算符,或是否第一次进入界面 private string Biaodashi; //记录运算符之前的表达式(在第一栏) private decimal Sum;//记录之前计算的结果(在第二栏) private string Pre

winform中拖动功能实现技巧

实现的需求,我通过拖动选中的用户行放到左边的机构节点上,从而实现用户改变组织机构的关系 如下图 贴代码 private DataGridViewSelectedRowCollection sourceRowCollection = null; private int rowIndexFromMouseDown; /// <summary> /// 用户拖动到机构里改变所属机构关系 /// </summary> /// <param name="sender"

C# 实现 Winform 切换用户功能

方法一: #region 登录部分 private void RtnLoginOK_Click(object sender, EventArgs e) //登录按钮单击事件 { this.Hide(); FrmRoutineMain formRtnLoginOK = new FrmRoutineMain(); //新建主窗体 formRtnLoginOK.ShowDialog(); } #endregion #region 切换用户 private void RtnMainSwitchUser_

C# 编写的winform程序的托盘功能

基本上大部分的桌面程序都有托盘功能,比如说QQ:当你单机QQ程序窗体的最小化按钮时,窗体会消失,并且单击电脑右下角的QQ图标时,QQ的窗体重新显现-- 在这里介绍下我们自己编写的winform程序怎么实现托盘功能. 在System.Windows.Forms命名空间下的 封闭类 NotifyIcon可以帮我们轻松实现托盘功能.(程序集 System.Windows.Forms.dll) 在窗体的加载事件的处理方法中我们添加一下代码: NotifyIcon MyNotifyIcon = new N

WinForm应用程序中实现自动更新功能

WinForm应用程序中实现自动更新功能 编写人:左丘文 2015-4-20 近来在给一客户实施ECM系统,但他们使用功能并不是我们ECM制造版提供的标准功能,他们要求对系统作一些定制功能,为了避免因程序的bug而带来频繁让用户更新程序的不良影响,就想给ECM增加一个winform自动更新功能,今天在这里,我想与大家一起分享代码,在此做个小结,以供参考.有兴趣的同学,可以一同探讨与学习一下,否则就略过吧.   1. 首先我们在这里先分析一下其它程序猿的一些基本情况: 相信有许多程序猿都喜欢用Wi