winform 猜猜看 分类: WinForm 2014-08-21 14:12 267人阅读 评论(0) 收藏
说明:
1>窗体应用程序。
2>一个窗体(Form1),一个按钮(btnStart),一个文本(labTime)
3>截图:
4>代码如下:
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;
using System.Data.SqlClient;
using System.Collections;
namespace CaiCaiKan {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
System.Threading.Thread Gthread;//定义线程
Random Grandom = new Random();//定义随机数对象
int Gnum;//定义变量用于存放存机数
private void btnStart_Click(object sender, EventArgs e) {
RemoveControl();//清空所有无用对象
btnStart.Enabled = false;//设置开始按钮不可用
//生成100个按钮,10横10竖
int px = 10;//第一个按钮的位置
int py = 60;
for (int i = 0; i < 100; i++) {
Button btn = new Button();//给按钮赋值,定义宽和高
btn.Name = (i+1).ToString();
btn.Text = (i+1).ToString();
btn.Width = 35;
btn.Height = 35;
btn.Location = new Point(px, py);
btn.Click += new EventHandler(btn_Click);//定义按钮事件
px += 36;
if ((i + 1) % 10 == 0) {
px = 10;
py += 36;
}
Controls.Add(btn);//将button按钮放入窗体控件集合中
}
//新建一个线程
Gthread = new System.Threading.Thread(delegate()
{
int count = 0;//初始化计数器
while (true)//开始无限循环
{
//计数器累加
count = ++count > 100000000 ? 0 : count;//设置最大数值
this.Invoke(//将代码交给主线程执行
(MethodInvoker)delegate//使用匿名方法
{
//窗体中显示计数
labTime.Text = "用时:" + count.ToString() + " 秒";
});
//线程睡眠1秒
System.Threading.Thread.Sleep(1000);
}
});
Gthread.IsBackground = true;//设置线程为后台线程
Gthread.Start();//开始执行线程
Gnum = Grandom.Next(1, 100);//生成随机数
}
// 用于清空窗体中动态生成的按钮
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;
}
}
}
}
}
//自动生成的按钮事件
void btn_Click(object sender, EventArgs e)
{
Control P_control = sender as Control;//将sender(存放的是指向实体对象的指针)转换为control类型对象
if (int.Parse(P_control.Name) > Gnum)
{
P_control.BackColor = Color.Red;//设置按钮背景为红色
P_control.Enabled = false;//设置按钮停用
P_control.Text = "大";//更改按钮文本
}
if (int.Parse(P_control.Name) < Gnum)
{
P_control.BackColor = Color.Red;//设置按钮背景为红色
P_control.Enabled = false;//设置按钮停用
P_control.Text = "小";//更改按钮文本
}
if (int.Parse(P_control.Name) == Gnum)
{
Gthread.Abort();//终止计数线程
//显示游戏信息
MessageBox.Show(string.Format("恭喜你猜对了!共猜了{0}次 {1}", GetCount(), labTime.Text), "恭喜!");
btnStart.Enabled = true;//启用开始按钮
}
}
//获取已点击按钮个数
string GetCount()
{
int temp = 0;//初始化计数器
foreach (Control c in Controls)//遍历控件集合
{
// 用于查找窗体中Enable属性为False控件的数量
if (!c.Enabled) {
temp++;//计数器累加
}
}
return temp.ToString();//返回计数器信息
}
//关闭窗体
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
Environment.Exit(0);//强行关闭窗体,应用程序即强制退出。
}
}
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
winform 猜猜看 分类: WinForm 2014-08-21 14:12 267人阅读 评论(0) 收藏的更多相关文章
- iOS正则表达式 分类: ios技术 2015-07-14 14:00 35人阅读 评论(0) 收藏
一.什么是正则表达式 正则表达式,又称正规表示法,是对字符串操作的一种逻辑公式.正则表达式可以检测给定的字符串是否符合我们定义的逻辑,也可以从字符串中获取我们想要的特定部分.它可以迅速地用极简单的方式 ...
- Poj 2528 Mayor's posters 分类: Brush Mode 2014-07-23 09:12 84人阅读 评论(0) 收藏
Mayor's posters Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 40570 Accepted: 11798 ...
- cubieboard变身AP 分类: ubuntu cubieboard 2014-11-25 14:04 277人阅读 评论(0) 收藏
加载bcmdhd模块:# modprobe bcmdhd 如果你希望开启 AP 模式,那么:# modprobe bcmdhd op_mode=2 在/etc/modules文件内添加bcmdhd o ...
- printf "%.*s" 分类: 小细节 2015-07-04 14:36 2人阅读 评论(0) 收藏
ref : http://www.cnblogs.com/yuaqua/archive/2011/10/21/2219856.html 小数点.后"*"表示输出位数,具体的数据来自 ...
- Eclipse和MyEclipse的区别 分类: 编程工具 2015-07-18 11:12 23人阅读 评论(0) 收藏
今天,在一个Q群里有人问Eclipse和MyEclipse的区别.虽然对于知道的人来说答案很简单,但是对于不知道的人来说就很难,很多问题也都是这样的,会者不难,难者不会. 其实,网上搜搜答案就挺多的, ...
- IIS上虚拟站点的web.config与主站点的web.config冲突解决方法 分类: ASP.NET 2015-06-15 14:07 60人阅读 评论(0) 收藏
IIS上在主站点下搭建虚拟目录后,子站点中的<system.web>节点与主站点的<system.web>冲突解决方法: 在主站点的<system.web>上一级添 ...
- C++实现不能被继承的类——终结类 分类: C/C++ 2015-04-06 14:48 64人阅读 评论(0) 收藏
1. 问题 C++如何实现不能被继承的类,即终结类.Java中有final关键字修饰,C#中有sealed关键字修饰,而C++目前还没有类似的关键字来修饰类实现终结类,需编程人员手动实现. ...
- Dungeon Master 分类: 搜索 POJ 2015-08-09 14:25 4人阅读 评论(0) 收藏
Dungeon Master Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 20995 Accepted: 8150 Descr ...
- Codeforces 343D Water Tree 分类: Brush Mode 2014-10-05 14:38 98人阅读 评论(0) 收藏
Mad scientist Mike has constructed a rooted tree, which consists of n vertices. Each vertex is a res ...
随机推荐
- TP缓存设计方案解析
TP的缓存主要依赖Cache类,Cache类其实是一个代理类,Cache类通过getInstance静态方法来获取缓存实例,而getInstance方式实际是调用Cache类的connect方法,该方 ...
- (一)跟我一起玩Linux网络服务:DNS服务——BIND(/etc/named.conf、/var/named)设置实现和解释
2015年3月24更新 添加了要加的配置域名解析器(否则会找不到域名) 一.创建该实验的的模型 配置完gate虚拟机的两张网卡后,就启动gate的转发 [root@localhost ro ...
- sql 建立数据库,表格,索引,主键
---- 数据库: `message_db`-- -- --------------------------------------------------------create database ...
- DOM 操作内容 innerText/innerHTML
DOM 操作内容 innerText/innerHTML innerText属性(firefox不支持,可用 textContent)var div = document.getElementById ...
- js中的forin
前言 自己在平时没事干练练手,发现的以前一直以为是错的.幸亏今天知道了,要不说起来自己还不知道呢. 过程 遍历前置页面上的textbox,给他们赋值(js). 一开始自己用forin遍历的. 如论如何 ...
- mysql基本介绍和优化技巧
一. mysql框架和基本介绍 1. 框架图 更详细: 2. 存储引擎 MYISAM与INNODB对比: MYISAM:mysql5.1及以前版本的默认存储引擎.支持全文检索,压缩,表级锁等,但不支持 ...
- awk基础 [马哥视频]
awk基础 1.1 print print的使用格式: print item1,item2, …. 要点: 各项目自己使用逗号隔开,而输出时则以空白字符分隔: 输出的item可以为字符串或者数值,当前 ...
- GO语言中的指针
http://www.tizgrape.com/?p=100 Go语言中的指针语法和C++一脉相承,都是用*作为符号,虽然语法上接近,但是实际差异不小. Go使用var定义变量: var v6 *in ...
- Contest 高数题 樹的點分治 樹形DP
高数题 HJA最近在刷高数题,他遇到了这样一道高数题.这道高数题里面有一棵N个点的树,树上每个点有点权,每条边有颜色.一条路径的权值是这条路径上所有点的点权和,一条合法的路径需要满足该路径上任意相邻的 ...
- [BZOJ 3894] 文理分科 【最小割】
题目链接:BZOJ - 3894 题目分析 最小割模型,设定一个点与 S 相连表示选文,与 T 相连表示选理. 那么首先要加上所有可能获得的权值,然后减去最小割,即不能获得的权值. 那么对于每个点,从 ...