使用 C# 开发智能手机软件:推箱子(二十)
这是“使用 C# 开发智能手机软件:推箱子” 系列文章的第二十篇。在这篇文章中,介绍 Window/DesignDlg.cs 源程序文件。这个源程序文件包含 DesignDlg 类,该类继承自 System.Windows.Forms.Form 类,表示推箱子的“设计”对话框。如下图所示:
我们先看看 DesignDlg.Designer.cs 的部分源程序代码吧:
2 {
3 partial class DesignDlg
4 {
5 private void InitializeComponent()
6 {
7 // 注意:省略了一些代码
8
9 this.rbnCreate.CheckedChanged += new System.EventHandler(this.Action_CheckedChanged);
10 this.rbnEdit.CheckedChanged += new System.EventHandler(this.Action_CheckedChanged);
11 this.rbnDelete.CheckedChanged += new System.EventHandler(this.Action_CheckedChanged);
12 this.tbxDeleteLevel.TextChanged += new System.EventHandler(this.tbxDeleteLevel_TextChanged);
13 }
14
15 private System.Windows.Forms.NumericUpDown nudWidth;
16 private System.Windows.Forms.NumericUpDown nudHeight;
17 private System.Windows.Forms.RadioButton rbnCreate;
18 private System.Windows.Forms.RadioButton rbnEdit;
19 private System.Windows.Forms.RadioButton rbnDelete;
20 private System.Windows.Forms.Button btnOk;
21 private System.Windows.Forms.Button btnCancel;
22 private System.Windows.Forms.CheckBox chkCopy;
23 private System.Windows.Forms.TextBox tbxDeleteLevel;
24 private System.Windows.Forms.TextBox tbxLevel;
25 }
26 }
下面来看看 DesignDlg.cs 的源程序代码吧:
2 using System.Drawing;
3 using System.Windows.Forms;
4 using Skyiv.Ben.PushBox.Common;
5
6 namespace Skyiv.Ben.PushBox.Window
7 {
8 /// <summary>
9 /// “设计”对话框
10 /// </summary>
11 public partial class DesignDlg : Form
12 {
13 Action active;
14 int level;
15 int maxLevel;
16 Size levelSize;
17
18 public Action Active { get { return active; } }
19 public bool IsCopy { get { return chkCopy.Checked; } }
20 public int Level { set { level = value; } }
21 public int MaxLelvel { set { maxLevel = value; } }
22
23 public DesignDlg(bool isTopMost)
24 {
25 InitializeComponent();
26 TopMost = isTopMost;
27 }
28
29 protected override void OnLoad(EventArgs e)
30 {
31 base.OnLoad(e);
32 tbxLevel.Text = (level + 1).ToString() + "/" + maxLevel.ToString();
33 rbnDelete.Enabled = (level == maxLevel - 1 && maxLevel > 1);
34 Action_CheckedChanged(rbnCreate, null);
35 }
36
37 public Size LevelSize
38 {
39 get
40 {
41 return (active == Action.Create) ? new Size((int)nudWidth.Value, (int)nudHeight.Value) : levelSize;
42 }
43 set
44 {
45 levelSize = value;
46 if (value.Width > nudWidth.Maximum) nudWidth.Maximum = value.Width;
47 if (value.Height > nudHeight.Maximum) nudHeight.Maximum = value.Height;
48 nudWidth.Value = value.Width;
49 nudHeight.Value = value.Height;
50 }
51 }
52
53 public int MaxLevelSize
54 {
55 set
56 {
57 nudWidth.Maximum = (nudWidth.Value > value) ? nudWidth.Value : value;
58 nudHeight.Maximum = (nudHeight.Value > value) ? nudHeight.Value : value;
59 }
60 }
61
62 private void Action_CheckedChanged(object sender, EventArgs e)
63 {
64 RadioButton s = (RadioButton)sender;
65 if (s == rbnCreate && s.Checked)
66 {
67 active = Action.Create;
68 chkCopy.Enabled = nudWidth.Enabled = nudHeight.Enabled = true;
69 tbxDeleteLevel.ReadOnly = true;
70 btnOk.Enabled = true;
71 }
72 if (s == rbnEdit && s.Checked)
73 {
74 active = Action.Edit;
75 chkCopy.Enabled = nudWidth.Enabled = nudHeight.Enabled = false;
76 tbxDeleteLevel.ReadOnly = true;
77 btnOk.Enabled = true;
78 }
79 else if (s == rbnDelete && s.Checked)
80 {
81 active = Action.Delete;
82 chkCopy.Enabled = nudWidth.Enabled = nudHeight.Enabled = false;
83 tbxDeleteLevel.ReadOnly = false;
84 tbxDeleteLevel.Text = string.Empty;
85 btnOk.Enabled = (level + 1).ToString() == tbxDeleteLevel.Text;
86 }
87 }
88
89 private void tbxDeleteLevel_TextChanged(object sender, EventArgs e)
90 {
91 btnOk.Enabled = (level + 1).ToString() == tbxDeleteLevel.Text;
92 }
93 }
94 }
几点说明:
- “设计”对话框用来选择“新建”、“编辑”、“删除”推箱子游戏的关卡。
- 如果当前关不是最后一关,“删除”单选按钮将不可选(变灰),这是由该类的 OnLoad 方法中的以下语句实现的:
rbnDelete.Enabled = (level == maxLevel - 1 && maxLevel > 1); - 如果选择“删除”的话,必须输入要删除的关数用以确认,否则“确定”按钮将无法点击(变灰),这是由该类的 tbxDeleteLevel_TextChanged 方法实现的,该方法只有一条语句:
btnOk.Enabled = (level + 1).ToString() == tbxDeleteLevel.Text; - 如果不是选择“新建”的话,将无法输入“宽度”和“高度”,这是由该类的 Action_CheckedChanged 实现的。
- 这个类只是一个用户界面,负责按受用户所选择的“设计”动作和相应的参数,实际进行设计工作的代码将在下篇文章中介绍。
上一篇:使用 C# 开发智能手机软件:推箱子(十九)
下一篇:使用 C# 开发智能手机软件:推箱子(二十一)
返回目录
使用 C# 开发智能手机软件:推箱子(二十)相关推荐
- 使用 C# 开发智能手机软件:推箱子(二十三)
这是"使用 C# 开发智能手机软件:推箱子" 系列文章的第二十三篇.在这篇文章中,介绍 Window/MainForm.Common.cs 源程序文件.这个源程序文件是 MainF ...
- 使用 C# 开发智能手机软件:推箱子(十二)
这是"使用 C# 开发智能手机软件:推箱子"系列文章的第十二篇.在这篇文章中,介绍 Window/AboutDlg.cs 源程序文件. 这个源程序文件包括 AboutDlg 类,该 ...
- 使用 C# 开发智能手机软件:推箱子(四)
这是" 使用 C# 开发智能手机软件:推箱子 "系列文章的第四篇.在这篇文章中,介绍 Common/FindPath.cs 源程序文件. using System; using S ...
- 使用 C# 开发智能手机软件:推箱子(十一)
这是" 使用 C# 开发智能手机软件:推箱子 "系列文章的第十一篇.在这篇文章中,介绍 Common/Env.cs 源程序文件.这个源程序文件中包含表示"工作环境&quo ...
- 【软件开发底层知识修炼】二十六 ABI-应用程序二进制接口 学习总结文章目录
前面学习了ABI的知识,感觉受益良多.对底层与编译器有更加深刻的认识,为此这里将前面写过的关于ABI 的文章给列出来,方便学习与翻阅. [软件开发底层知识修炼]二十一 ABI-应用程序二进制接口一 [ ...
- 【软件开发底层知识修炼】二十五 ABI之函数调用约定二之函数返回值为结构体时的约定
上一篇文章学习了几种函数调用约定的区别,点击链接查看上一篇文章:[软件开发底层知识修炼]二十四 ABI之函数调用约定 本篇文章继续学习函数调用约定中,关于函数返回值的问题.当函数返回值为结构体时,函数 ...
- JavaWeb开发与代码的编写(二十四)
JavaWeb开发与代码的编写(二十四) JNDI数据源的配置 数据源的由来 在Java开发中,使用JDBC操作数据库的四个步骤如下: ①加载数据库驱动程序(Class.forName("数 ...
- 一文教你使用java开发一款推箱子游戏
导读:社会在进步,人们生活质量也在日益提高.高强度的压力也接踵而来.社会中急需出现新的有效方式来缓解人们的压力.此次设计符合了社会需求,Java推箱子游戏可以让人们在闲暇之余,体验游戏的乐趣.具有操作 ...
- 一步一步教你开发《松鼠推箱子》手机游戏
这类游戏大家肯定都玩过,一个很有趣味性的小游戏.操作简单,具有一定的逻辑性.很适合无聊的时候消遣时间.:) 首先简单介绍下手机游戏的一般性开发过程.首先需要策划出一个游戏方案,也就是要给出一个游戏的整 ...
最新文章
- 【深度学习】caffe 中的一些参数介绍
- Android SlidingMenu插件的使用
- jvm面试2 jvm如何加载java代码? JVM知识重点:内存模型和GC
- Linux软件 github,Linux下使用GitHub记
- mfc formview中的关闭视图函数_VC|API消息处理(回调函数+分支语句)与MFC中的消息映射函数...
- Apicloud_(问题)P54提示错误:Uncaught SyntaxError: Unexpected token ) at main.html : 117
- 如何把数据库从sql变成mysql_(转)如何将数据库从SQL Server迁移到MySQL
- Oracle odi 数据表导出到文件
- BERT-从业者的观点
- sap的工作日历_ABAP-有关日期的SAP函数使用(日历)
- 操作系统-课堂笔记-磁盘调度(南航)
- Python-argparse库基本使用方法和add_argument() 参数详解
- 机器认知、人机交互、边缘计算……在这里,他们谈论了关于AI的关键议题...
- 数据库sql课后总结
- 任天堂switch修改服务器,任天堂switch将退在线服务器 玩家似乎并不买账
- Leetcode算法题-解法转载
- python 银行_python 银行系统
- Ceva Dsp公司及产品介绍
- 不讲“日本汉语”就不能说话?
- 10GE---超长距离的万兆以太网
热门文章
- java创建医生的对象_基于安卓Android的作物医生App设计开发(MySQL)(含录像)
- linux mysql 知乎_在 Linux 上安装 MariaDB 或 MySQL | Linux 中国
- linux shell find depth,搞定 Linux Shell 文本处理工具,看完这篇集锦就够了
- linux环境c语言实现who,C语言编程实现Linux命令——who
- Zabbix添加客户端步骤
- 用c语言编写5颗骰子任意投掷总数为15 的概率,概率统计习题1period;2答案
- php 批量修改文件,php如何批量修改文件名
- win服务器数据丢失怎么办
- IIS6下PHP的ISAPI和FastCGI性能比较 期待ii7
- qt+vs2017环境下XIMEA相机库的配置