winform小程序------数字猜大小(经典线程和自动生成控件的小例子)

一:上图


二:相关代码


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace gessNumGame
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
System.Threading.Thread G_thread;//定义线程
Random G_random = new Random();//定义随机数对象

int G_int_num;//定义变量用于存放存机数

private void btn_start_Click(object sender, EventArgs e)
{
RemoveControl();//清理上一局
btn_start.Enabled = false;//停用开始按钮
int p_int_x=10;//第一个按钮横坐标
int p_int_y=60;//第一个按钮纵坐标
for (int i = 0; i < 100; i++)//生成100个按钮
{
Button btn = new Button();//生成一个按钮
btn.Name = (i + 1).ToString();//设定名字
btn.Text = (i + 1).ToString();//设定文本显示
btn.Width = 35;//按钮宽度
btn.Height = 35;//按钮高度
btn.Location = new Point(p_int_x, p_int_y);//按钮位置
btn.Click += new EventHandler(bt_Click);//定义button按钮的事件

p_int_x += 36;//下一个按钮横坐标
if ((i+1) % 10 == 0)//下一行
{
p_int_x = 10;//下一行第一个按钮横坐标
p_int_y += 36;//下一行第一个按钮纵坐标
}
Controls.Add(btn);//将button按钮放入窗体控件集合中

G_thread = new System.Threading.Thread
(//新建一个计时和产生随机数的线程
delegate()//使用匿名方法将代码块传递为委托参数
{
int P_int_count = 0;//初始化计数器
while (true)//开始无限循环
{
P_int_count = //计数器累加
++P_int_count > 100000000 ? 0 : P_int_count;//设置最大数值
this.Invoke(//将代码交给主线程执行
(MethodInvoker)delegate//使用匿名方法
{
lbl_time.Text = //窗体中显示计数
P_int_count.ToString();
});
System.Threading.Thread.Sleep(1000);//线程睡眠1秒
}
}
);
G_thread.IsBackground = true;//设置线程为后台线程
G_thread.Start();//开始执行线程
G_int_num = G_random.Next(1, 100);//生成随机数
}
}
void bt_Click(object sender, EventArgs e)
{
Control P_control = sender as Control;//将sender(存放的是指向实体对象的指针)转换为control类型对象
if (int.Parse(P_control.Name) > G_int_num)
{
P_control.BackColor = Color.Red;//设置按钮背景为红色
P_control.Enabled = false;//设置按钮停用
P_control.Text = "大";//更改按钮文本
}
if (int.Parse(P_control.Name) < G_int_num)
{
P_control.BackColor = Color.Red;//设置按钮背景为红色
P_control.Enabled = false;//设置按钮停用
P_control.Text = "小";//更改按钮文本
}
if (int.Parse(P_control.Name) == G_int_num)
{
G_thread.Abort();//终止计数线程
MessageBox.Show(string.Format(//显示游戏信息
"恭喜你猜对了!共猜了{0}次 用时{1}秒",
GetCount(), lbl_time.Text), "恭喜!");
btn_start.Enabled = true;//启用开始按钮
}
}
/// <summary>
/// 用于查找窗体中Enable属性为False控件的数量
/// 用于计算玩家有多少次没有猜中
/// </summary>
/// <returns>返回没有猜中数量</returns>
string GetCount()
{
int P_int_temp = 0;//初始化计数器
foreach (Control c in Controls)//遍历控件集合
{
if (!c.Enabled)
P_int_temp++;//计数器累加
}
return P_int_temp.ToString();//返回计数器信息
}
/// <summary>
/// 用于清空窗体中动态生成的按钮
/// </summary>
void RemoveControl()
{
for (int i = 0; i < 100; i++)//开始遍历100个按钮
{
if (Controls.ContainsKey(//窗体中是否有此按钮
(i + 1).ToString()))
{
for (int j = 0; j < Controls.Count; j++)//遍历窗体控件集合
{
if (Controls[j].Name == //是否查找到按钮
(i + 1).ToString())
{
Controls.RemoveAt(j);//删除指定按钮
break;
}
}
}
}
}

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
Environment.Exit(0);//强行关闭窗体,应用程序即强制退出。
}
}
}

三:程序下载


加载如下地址即可下载:

http://files.cnblogs.com/hongmaju/NumGame.zip

时间: 2024-12-27 19:29:20

winform小程序------数字猜大小(经典线程和自动生成控件的小例子)的相关文章

谷歌布局小程序,小程序将成为未来电商主要格局—极限工坊淘小咖

微信如今已经是最大的社交软件,拥有着近乎10亿的流量使得其成为众多商家盈利的方向,随着新零售的普及,可以想象以后新零售与社交电商小程序的的结合必定能够带来高引流和高转化. 微信在国内目前是一个备受欢迎的消息应用,首次上线后不仅用户量庞大,更在平台的基础上增加了小程序的功能. 最近谷歌更是宣布入驻了这一平台,推出了小程序[猜画小歌],这意味着谷歌已经在拥抱布局小程序了,对于谷歌而言是打开中国应用市场的一个新的尝试. 由于微信小程序拥有多种开放能力与电商场景的磨合,电商小程序成为了最早爆发的,微信小

这两款小程序,你春节一定用得上!wewx.cn[微信小程序商店]

当小程序正式发布的火爆期逐渐过去,我们是时候该思考一下,什么样的小程序才能保持长久的生命力?或者说,什么行业才适合做小程序? 在微信官方给出的案例中,旅游.出行将是未来小程序的重要领域.那么,这个行业的大公司有什么动作呢? 今天,我们就跟大家一起来看看,去哪儿推出的两款小程序,以及他们对小程序的定位和目标. 去哪儿做了什么小程序? 截至目前为止,去哪儿一共推出了两款小程序,「去哪个酒店」和「去哪儿出行」,分别满足用户「订酒店」和「订票」的需求. 「去哪儿酒店」和「去哪儿出行」已进驻wewx.cn

微信小程序、应用号、订阅号、服务号、企业号小总结

微信小程序是现在微信推出的一个新的项目,但是很多人都不是很清楚微信小程序是怎么一回事,不明白到底怎样分别微信小程序和别的公众号.订阅号等的区别,那么让小编来给你介绍一下. 微信小程序目前是内侧阶段,是一款非常实用省心的应用分发市场,那么应用号与企业号.订阅号.服务号有什么区别呢? 微信小程序.应用号.订阅号.服务号.企业号区别介绍 Q:微信已经有了订阅号.服务号.企业号,小程序和这三者有什么不同? A:小程序.订阅号.服务号.企业号目前是并行的体系. Q:外界有说法称,小程序的推出意味着微信要做

小程序再次大升级:一号旺铺让你能用小程序打开小程序

腾讯科技讯6 月 21 日晚间,小程序再次迎来三大功能升级,包括小程序打开小程序.门店小程序的门店页支持添加视频.门店小程序支持接口管理,丰富了使用场景和扩展性. 以下为主要功能升级: 1.一号旺铺小程序打开小程序 同一个公众号下关联的 10 个同主体小程序和 3 个非同主体小程序之间,可以调用接口直接相互跳转.微信客户端6.5. 9 及以上版本支持. 2.门店小程序的门店页支持添加视频 为了方便宣传门店形象,门店小程序的门店页支持可添加视频.添加视频方式有两种: 上传视频至公众号素材库添加.

小程序弱网环境卡顿怎么办?一招迅速提升小程序运行速度

2018 年 1 月 15 日,微信公开课 PRO 在广州正式"开课".与往年不同,今年的微信公开课将整场大会的焦点都放在了小程序上.从 2017 年 1 月上线到现在,小程序依托于微信这个庞大的流量机器,在不知不觉间构建了一个新型的移动互联网生态圈. 微信小程序从麦当劳.肯德基等在线点餐服务到共享单车.共享充电宝等租用服务,再到与京东.拼多多等电商结合,小程序正在全方位的"入侵"人们的衣食住行.  △ 知晓程序官网小程序分类 张小龙在微信公开课上讲到:"

京东小程序888元礼品卡免费送,为商家免费定制“小程序”助力连接线上线下

文末进入→ 京东礼品卡活动入口   一.京东小程序累计近1.7亿用户领跑社交电商,小程序必将成未来十年的移动互联网趋势! 618大促高潮刚刚过去,阿拉丁研究院发布了首份<618小程序电商行业报告>报告显示,618期间电商小程序新增用户数达5302万余人,访问次数超10亿次,分享累计次数达8432万. 这其中京东购物小程序从上线截止到18日累计用户数近1.7亿,访问人次同比去年618增长超过46倍,下单用户数同比去年增长达66倍. 通过京东小程序上述数据,确实让我们看到了小程序的具大潜力.小程序

winform 自定义自动完成控件

做过前端的朋友肯定很清楚自动完成控件,很多优秀的前端框架都会带有自动完成控件,同样的,winform也有,在我们的TextBox和ComboBox中,只需要设置AutoCompleteSource属性为CustomSource,然后将值加入到AutoCompleteCustomSource中就可以了 比如: string[] dataSource=new string[]{"apple","orange","banner"}; textBox1.

卖票小程序(二):解决Thread线程安全隐患!

第二篇文章内容 class Ticket implements Runnable//extends Thread//实现Runnable接口 { public int tic = 100; Object obj = new Object(); public void run() { while(true)//默认为真 { synchronized(obj)//同步代码块 { if(tic>0) {//如果票数大于0则执行如下代码. try {Thread.sleep(10);} catch (E

小程序canvas使用,及一些坑,以及自己的一些小总结

自己做了一个小程序,主要用于给头像加图标的那种,和qq似的,主要用canvas做的, 第一回用,掉了很多坑,所以今天系统的总结一下自己所做的,如果大家有不理解的地方,欢迎提问 canvas可以用来画一些东西,前台生成一些海报什么的,可以保存base64图片(待定,因为图片转base64,有点模糊), canvas中介绍的各种方法有很多参数,不理解的话请自行到小程序开发文档查看 我合成的方法是,第一步:获取系统信息,第二步:画背景,第三步:在这个背景上画另外一张图片,进行合成,然后转base64图