WPF简单的口算案例
前几天在博客园,看到有博友利用Winform做了一个口算案例,于是我想把它移植在WPF程序中。Winform程序:http://www.cnblogs.com/ImYZF/p/3345452.html

WPF中:

个人感觉在WPF中动态创建完控件之后,无法有像Winform中FindName()这样的方法来对控件进行搜寻,因此我采用的方法是在布局控件中动态创建控件后,用for循环遍历布局中的控件,然后利用
布局控件的Children属性进行对控件的定位。
上代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes; namespace 口算训练
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
} private void btnAdd_Click(object sender, RoutedEventArgs e)
{
if (txtNum.Text == "")
{
MessageBox.Show("请输入数目!");
return;
}
//清空布局控件中的控件
grid2.Children.Clear();
int totalNumber = int.Parse(txtNum.Text);
Random random = new Random();
TextBox tb = new TextBox();
Label l = new Label();
for (int i = ; i < totalNumber; i++)
{
//根据问题的数量设置row的个数
grid2.RowDefinitions.Add(new RowDefinition() { Height=new GridLength()});
for (int j = ; j <=; j++)
{
//设置文本框的一些属性
tb = new TextBox();
tb.Width = ;
tb.Height = ;
tb.Name = "txt" + Convert.ToString(i)+Convert.ToString(j);
//附加属性
tb.SetValue(Grid.RowProperty, i);
tb.SetValue(Grid.ColumnProperty,(j-)*); if (j <= )
{
//产生随机数,作为加数
tb.Text = Convert.ToString(random.Next());
tb.IsReadOnly = true;
}
//添加子控件
grid2.Children.Add(tb);
l = new Label(); //创建Label
switch (j) {
case : l.Width = ; l.Height = ; l.Content = "+"; l.SetValue(Grid.RowProperty, i); l.SetValue(Grid.ColumnProperty, j);
break;
case : l.Width = ; l.Height = ; l.Content = "="; l.SetValue(Grid.RowProperty, i); l.SetValue(Grid.ColumnProperty, j + );
break;
case : l.Width = ; l.Height = ; ; l.Name = "labelresult" + Convert.ToString(i); ; l.SetValue(Grid.RowProperty, i); l.SetValue(Grid.ColumnProperty, j + );
break; }
grid2.Children.Add(l); } }
} private void btnResult_Click(object sender, RoutedEventArgs e)
{
int totalNumber=int.Parse(txtNum.Text);
TextBox[] tbs;
for (int i = ; i <=totalNumber; i++)
{ tbs = new TextBox[];
//获取有关TextBox控件
tbs[] = grid2.Children[ * (i-)] as TextBox;
tbs[] = grid2.Children[ * (i-) + ] as TextBox;
tbs[] = grid2.Children[ * (i-) + ] as TextBox; Label labelresult = grid2.Children[ * (i-) + ] as Label;
//如果未填答案,按错误处理
if (tbs[].Text == "")
{
labelresult.Content = "X";
continue;
}
int add = Convert.ToInt32(tbs[].Text) + Convert.ToInt32(tbs[].Text);
if (add == Convert.ToInt32(tbs[].Text))
{
labelresult.Content = "right!";
}
else
{
labelresult.Content = "X";
}
}
}
}
}
WPF简单的口算案例的更多相关文章
- 洛谷 P1957 口算练习题
洛谷 P1957 口算练习题 题目描述 王老师正在教简单算术运算.细心的王老师收集了i道学生经常做错的口算题,并且想整理编写成一份练习. 编排这些题目是一件繁琐的事情,为此他想用计算机程序来提高工作效 ...
- 【转载】Ssh整合开发介绍和简单的登入案例实现
Ssh整合开发介绍和简单的登入案例实现 Ssh整合开发介绍和简单的登入案例实现 一 介绍: Ssh是strtus2-2.3.1.2+ spring-2.5.6+hibernate-3.6.8整合的开 ...
- WPF简单入门总结
WPF简单总结 最近看了点关于WPF的东西,总结了点点入门的东西. XAML语法基础 1. 定义样式 <Window.Resources><!--窗体资源的定义--> < ...
- C# WinForm动态控件实例:口算训练
昨天晚上回寝室看到室友正在被一个C#课的作业苦恼,作业的内容是编写一个口算训练程序,能够实现随意添加题目数量.于是,喜欢写C#的我就决定解救一下他们. 创建动态控件 既然要动态添加,那就必须使用动态控 ...
- 用Python开发小学二年级口算自动出题程序
版权声明:本文为博主原创文章,欢迎转载,并请注明出处.联系方式:460356155@qq.com 武汉光谷一小二年级要求家长每天要给小孩出口算题目,让孩子练习. 根据老师出题要求编写了Python程序 ...
- hdu 6287 口算训练
题意: 小Q非常喜欢数学,但是他的口算能力非常弱.因此他找到了小T,给了小T一个长度为nn的正整数序列a1,a2,...,ana1,a2,...,an,要求小T抛出mm个问题以训练他的口算能力. 每个 ...
- 《口算大作战 2》DLC:算法真奇妙
211614331 王诚荣 211614354 陈斌 --第一次结对作业 DLC DLC:三年级混合运算模块现已更新!现在您可以愉快的使用三年级题库啦.同时您必须拥有本体才能使用此DLC 单击此处查看 ...
- [BZOJ5358]/[HDU6287]口算训练
[BZOJ5358]/[HDU6287]口算训练 题目大意: 给定一个长度为\(n(n\le10^5)\)的正整数序列\(a_{1\sim n}\),\(m(m\le10^5)\)次询问.每次询问给出 ...
- [Bzoj5358][Lydsy1805月赛]口算训练(预处理+动态开点线段树)
5358: [Lydsy1805月赛]口算训练 Time Limit: 5 Sec Memory Limit: 512 MBSubmit: 318 Solved: 105[Submit][Stat ...
随机推荐
- java中访问mysql数据库中的表结构信息
package cn.hncu.meta; import java.sql.Connection;import java.sql.DatabaseMetaData;import java.sql.Re ...
- mysql颠覆实战笔记(三)-- 用户登录(二):保存用户操作日志的方法
版权声明:笔记整理者亡命小卒热爱自由,崇尚分享.但是本笔记源自www.jtthink.com(程序员在囧途)沈逸老师的<web级mysql颠覆实战课程 >.如需转载请尊重老师劳动,保留沈逸 ...
- PHP代码加密 -- php_strip_whitespace函数,去掉源代码所有注释和空格并显示在一行
<?php function stripCommentAndWhitespace($path = '') { if (empty($path)) { echo '请指定要操作的文件路径'; re ...
- u-boot移植为tiny6410步骤
1. 修改顶层Makefile文件 2. 修改arch/arm/cpu/arm1176/s3c64xx/cpu_init.S 3. 修改arch/arm/cpu/arm1176/s3c64xx/Mak ...
- 回溯(UVA129)
POINT: 如何判断是否包含连续重复子串? 判断 当前串 的 后缀 啦~~~ You have been employed by the organisers of a Super Krypton ...
- Win10开机小键盘不亮解决办法
1.首先修改注册表打开[HKEY_USERS\.DEFAULT\Control Panel\Keyboard]项,将"InitialKeyboardIndicators"的键值从& ...
- 参数请求post, get , delete中的基本使用(1)
/// <summary> /// get 数据的时候可以采用此函数大部分功能 /// </summary> /// <param name="args&quo ...
- MySQL免安装版配置
mysql版本:mysql-5.5.33-win32 1.解压免安装包到指定目录MYSQL_HOME2.cmd进入MYSQL_HOME\bin 注册mysql服务:mysqld --install M ...
- php递归方法实现无限分类实例
数组: 代码如下 复制代码 $items = array( array('id' => 1, 'pid' => 0, 'name' => '一级11' ), array('id' ...
- zDialog无法获取未定义或 null 引用的属性“_dialogArray”
zDialog无法获取未定义或 null 引用的属性"_dialogArray" 贴出错误:这个错误是从IE浏览器的控制台复制出来的. zDialog无法获取未定义或 null 引 ...