使用C# Winform制作线下抓阄小程序

昨天实验室里让抽出两个幸运儿负责运维服务器(众所周知这个活是又累又没劲),于是顺手写了一个小程序,实现抓阄。

首先第一步是做一下初始页面:

输入之后就让第一个人来点就好了:

然后抓到了就弹窗说你运气太好了这都被抓到了 ;抓不到就切换回原来的窗口,显示让第2个来抓。

实现起来不难(因为是做着玩的,所以变量都是随便定义的,将就看吧):

//上面第一个界面点按时的触发
private void button1_Click(object sender, EventArgs e)
        {
            int a, b;
            int.TryParse(textBox1.Text, out a);
            int.TryParse(textBox2.Text, out b);
            
            b_ch = b;
            a_ch = a;

            int[] index = new int[100];
            for (int i = 0; i < a; i++)
                index[i] = i;
            Random r = new Random();
            //用来保存随机生成的不重复的数
            
            int site = a;//设置上限
            int id;
            for (int j = 0; j < b; j++)
            {
                id = r.Next(1, site - 1);
                //在随机位置取出一个数,保存到结果数组
                result[j] = index[id];
                //最后一个数复制到当前位置
                index[id] = index[site - 1];
                //位置的上限减少一
                site--;
            }


            this.Hide();
            Form2 f = new Form2();
            for (int i = 0; i < a; i++)
            {
                f.ShowDialog();
                ap++;
            }
            this.Close();
        }
//上面第二个界面的按钮触发时发生的
private void button1_Click(object sender, EventArgs e)
        {
            int ap = Form1.ap+1;
            int perd = 1;
            int bh = Form1.b_ch;
            int[] ch = Form1.result;
            this.Hide();
            label4.Text = Convert.ToString(ap);
            for(int i = 0; i < bh; i++)
            {
                if (ch[i]==ap-1)
                {
                    perd = 0;
                    Form3 fd = new Form3();//和前面生成的随机数匹配,抓到了
                    fd.ShowDialog();
                    break;
                }
                else
                    continue;
            }
            if(perd == 1)
            {
                Form4 fd = new Form4();//没有匹配到,说明没有被抓到
                fd.ShowDialog();
            }
        }

 public Form2()
        {
            int ap = Form1.ap;
            InitializeComponent();
            label4.Text = Convert.ToString(ap);//显示第?个抓阄者
        }

最近用的时候发现一个问题,就是如果抓了一半不想玩了直接强行关闭会发生bug,所以还得加入一个“不想抓了”按钮,但是懒得弄了,反正已经抓完了(我还被抓到了,f**k)。

不过作为自己做的第一个c#程序,感觉还不错,又学了一门语言。

最后是一个没解决的问题:本来我想把生成的exe打包成一个安装程序,但是打包完后执行安装后只安装了一个dll文件,不知道有没有大佬能帮忙解决一下哈哈。

第1章 C#编程基础  实例1 Hello C#!  实例2 HeyGuy  实例3 预定义类型  实例4 类型转换  实例5 选择语句  实例6 循环语句  实例7 跳转语句  实例8 数组  实例9 枚举与结构类型  实例10 类  实例11 位运算  实例12 操作符重载  实例13 虚方法  实例14 委托  实例15 属性  实例16 异常处理  实例17 链表  实例18 回文数  实例19 汉诺塔  实例20 冒泡排序  实例21 插入排序  小结 第2章 界面编程  实例22 Hello Form  实例23 主菜单  实例24 上下文菜单  实例25 工具栏  实例26 状态栏  实例27 进度条  实例28 滑块控件  实例29 单选框和复选框  实例30 列表框和组合框  实例31 列表视图  实例32 树视图  实例33 Timer控件  实例34 Splitter控件  实例35 时钟控件和日历控件  实例36 MDI窗口  实例37 窗体继承  实例38 自制控件  实例39 使用自制控件  实例40 模式与非模式  实例41 会跑的按钮  实例42 绘制背景  实例43 可调窗口  实例44 托动窗体  实例45 电子便条  实例46 计算器界面设计  实例47 计算器功能实现  实例48 小闹钟  小结 第3章 图形与图像处理  实例49 简单画图  实例50 使用OnPaint绘制图形  实例51 绘制贝赛尔曲线  实例52 显示图像  实例53 消除图片背景  实例54 底片滤镜  实例55 浮雕效果  实例56 显示字体  实例57 特效字  实例58 旋转图片  实例59 打印  小结 第4章 线程 第5章 文件处理和系统操作 第6章 数据库编程 第7章 网络编程 第8章 Web应用程序的开发 第9章 多媒体 第10章 安全性 第11章 设计模式 第12章 杂例
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值