小白C#窗体系列-04.点名系列的小系统

这个东西其实是最简单的东西了,一个随机数一个集合一个timer控件就搞定了。本来不想写这一期的,后来有个哥们跟我说他在网上买了个抽奖系统花了几百块钱。。。。软件发过来我一反编译。。。当时我就愣了。。。一个猥琐的非人类就这样坑了一个好骗的人类。。。
        步入正题,逆天今天给大家带来的是点名抽奖系列的小系统,为了普遍性和简易性就没有写死直接用一个txt记录(其实写死的程序也可以改变他的一些内容,在本章节的最后会给大家一个小工具【C32Asm】)

软件下载(.NET 4.0 框架)http://pan.baidu.com/s/1sjK2rG5【源码看下面】(没有过多美化)

(这个是我以前在IBM为了抽作业而编的(变态版),你们反编译一下,我没加壳)
http://pan.baidu.com/s/1dDenq6X

一、设计图纸:

二、代码分析: 1、读文本并把元素写到集合中: 文本是小文件,就直接用File来读了,具体看解释:

先定义个范型集合:Dictionary<int, string> dic = new Dictionary<int, string>();

if (File.Exists("dnt.txt"))//判断文件是否存在

{

try

{

string[] dnt = File.ReadAllLines("dnt.txt", Encoding.Default);//以默认编码格式来存数据(解决中文乱码)

int i = 0;

foreach (string item in dnt)//全部写到List<T>中

{

if (!string.IsNullOrEmpty(item.Trim()))//非空才可以写进去,并且一行中不全为空格

{

dic.Add(i++, item.Trim());//把头和尾的空格去除掉

}

}

}

catch

{

MessageBox.Show("亲,你先把我关闭再打开一次,这样我就又可以快乐生活了~");

}

}

else

{

File.Create("dnt.txt");

MessageBox.Show("如果你想自定义内容,请在当前目录下的dnt.txt逐行放入数据\n软件每次打开的时候都会重新读取文本的内容!", "逆天友情提醒");

}

2、随机显示文本里面的内容:

if (dic.Count > 0)//先看一下集合里面是不是空的(默认为空【和数组不同】)

{

Random r = new Random();

int n = r.Next(0, dic.Count);

lbl1.Text = dic[n];

lbl1.Left = (433 - lbl1.Width) / 2; //控制它居中对齐(我这边写死了,你改一下)【窗体宽度-lbl宽度的一半】

}

是不是没什么好讲的?几百块???!!!年度在公司里面一般都有个什么抽奖环节的,非IT的你如果弄个这个,是不是很吊?。。。。。我飘过~~~
三、源码分享:http://pan.baidu.com/s/1sjudRUt
四、视频共享: 等~~~

本期推荐: C32Asm(很不错的小工具)                                                                             下一期:手动打造繁简互转器

时间: 2024-10-07 23:42:22

小白C#窗体系列-04.点名系列的小系统的相关文章

小白C#窗体系列-02.二维码生成器

今天是情人节,咳,男人们带着他们的男朋友们,女人带着她们的女朋友们愉快的逛着街.逆天也就不随大众了,就继续出C#小白系列的教程了~~~ 实在没空去录教程了,就看看文档吧,大家都知道的,录教程是比较花时间的,我不想草草了事,那是对大家和我自己的不负责,视频可以以后再录,不过软件和源码以及文档得先弄好,毕竟逆天不喜欢失信与自己~~ 废话不说了,开始我们的教程吧~ 软件下载(.NET 4.0 框架)http://pan.baidu.com/s/1i3BUVNv[源码看下面] 一.设计图纸: 二.代码分

小白C#窗体系列-01.简易浏览器

最近重伤,今天正好放假,就抽个空出C#第一集,开发完毕... 如果你看不到这篇文章,那过一天就可以看见了. 软件下载(.NET 4.0 框架)http://pan.baidu.com/s/1c03X7vM[源码看下面] 一.设计图纸: 二.代码分析 1.后退键. 前进键.停止键.刷新键:这几个功能本来我是准备用个数组来存储,可以前进后退的,后来啃他自带方法的时候发现微软提供了方法,也就偷个懒了后退按钮 this.webBrowser1.GoBack(); 前进按钮 this.webBrowser

小白C#窗体系列-03.图片查看器

新增拖拽功能 如果出现看不见的情况明天就好了,好了我们步入正题,作为一个吊丝,如果你用你女朋友/女神的照片做了个图片浏览器,那么你每次用来看图的时候第一张看的都是她了,当看到第二张你想看见的图时,是不是有个鲜明的对比呢,是落差还是什么的,就因人而异咯~~又开始想入非非了?哈哈,不扯淡了,继续:4步走~~~ 软件下载(.NET 4.0 框架)http://pan.baidu.com/s/1i387wJ7  [源码看下面] 逆天图片查看器1.0.1 下载   http://pan.baidu.com

Java 集合系列 04 LinkedList详细介绍(源码解析)和使用示例

java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java 集合系列 04 LinkedList详细介绍(源码解析)和使用示例 概要  和学习ArrayList一样,接下来呢,我们先对LinkedList有个整体认识,然后再学习它的源码:最后再通过实例来学会使用LinkedList.内容包括:第1部分 LinkedList介绍第2部分 LinkedList数

JavaScript进阶系列04,函数参数个数不确定情况下的解决方案

本篇主要体验函数参数个数不确定情况下的一个解决方案.先来看一段使用函数作为参数进行计算的实例. var calculate = function(x, y, fn) { return fn(x, y); }; var sum = function(x, y) { return x + y; }; var diff = function(x, y) { return x - y; }; var sumResult = calculate(1, 2, sum), diffResult = calcu

委托、Lambda表达式、事件系列04,委托链是怎样形成的, 多播委托

在"委托.Lambda表达式.事件系列01,委托是什么,委托的基本用法,委托的Method和Target属性"中,反编译委托,发现委托都是多播委托. 既然委托是多播委托,我们可以通过"+="把多个方法赋给委托变量,这样就形成了一个委托链, 它是怎样形成的?来看下面的例子: namespace ConsoleApplication3 { internal delegate void MySayDel(string msg); class Program { stati

线程系列04,传递数据给线程,线程命名,线程异常处理,线程池

本篇体验:如何传递数据给线程,如何给线程命名,线程的异常处理,线程池.实在是太基础的部分. □ 传递数据给线程 ※ 使用Lambda表达式 class Program { static void Main(string[] args) { Thread t = new Thread(() => Say("hello", "world")); t.Start(); } static void Say(string msg, string msg1) { Cons

php从入门到放弃系列-04.php页面间值传递和保持

php从入门到放弃系列-04.php页面间值传递和保持 一.目录结构 二.两次页面间传递值 在两次页面之间传递少量数据,可以使用get提交,也可以使用post提交,二者的区别恕不赘述. 1.get提交 使用get提交来传递数据,在链接地址中修改发送到服务器的 URL 如下所示http://www.cnblogs.com/MarkRao/p/php01.html?gName=mark&gAge=26 ,当然也可以在表单中设置method="get",php中接收get提交过来的数

java io系列04之 管道(PipedOutputStream和PipedInputStream)的简介,源码分析和示例

本章,我们对java 管道进行学习. 转载请注明出处:http://www.cnblogs.com/skywang12345/p/io_04.html java 管道介绍 在java中,PipedOutputStream和PipedInputStream分别是管道输出流和管道输入流.它们的作用是让多线程可以通过管道进行线程间的通讯.在使用管道通信时,必须将PipedOutputStream和PipedInputStream配套使用.使 用管道通信时,大致的流程是:我们在线程A中向PipedOut