使用 C# 开发智能手机软件:推箱子(二十一)
2007-10-27 11:59
274 查看
这是“使用 C# 开发智能手机软件:推箱子”
系列文章的第二十一篇。在这篇文章中,介绍 Window/MainForm.Design.cs 源程序文件。这个源程序文件是 MainForm
类的一部分,该类继承自 System.Windows.Forms.Form 类,表示推箱子的主窗体。而本篇文章讲述的是推箱子“设计”的实际工作,如下图所示:
我们先看看 MainForm.Designer.cs 源程序文件(该文件是由 Visual Studio 2005 IDE 自动生成的)中和“设计”工作相关的部分:
namespace Skyiv.Ben.PushBox.Window
{
partial class MainForm
{
// 注意:省略了很多代码,仅保留和 miDesign 相关的部分。
private void InitializeComponent()
{
this.miDesign = new System.Windows.Forms.MenuItem();
this.miData.MenuItems.Add(this.miDesign);
this.miDesign.Text = "设计";
this.miDesign.Click += new System.EventHandler(this.miDesign_Click);
}
private System.Windows.Forms.MenuItem miDesign;
}
}
上述代码片断展示了在推箱子游戏的主窗体上点击“菜单 -> 数据 -> 设计”时发生的事件:
this.miDesign.Click += new System.EventHandler(this.miDesign_Click);
也就是弹出一个“设计”对话框(在上篇文章“使用 C# 开发智能手机软件:推箱子(二十)”中已经介绍过了),让用户选择“新建”、“编辑”、“删除”推箱子游戏的关卡。当用户选择完毕点击“确定”按钮后,实际发生的动作是在主窗体中完成的,由下面的 MainForm.Design.cs 源程序代码来实现:
1 using System;
2 using System.Drawing;
3 using System.Windows.Forms;
4 using Skyiv.Ben.PushBox.Common;
5
6 namespace Skyiv.Ben.PushBox.Window
7 {
8 partial class MainForm
9 {
void miDesign_Click(object sender, EventArgs e)
{
using (DesignDlg dlg = new DesignDlg(TopMost))
{
dlg.MaxLevelSize = env.MaxLevelSize;
dlg.LevelSize = env.LevelSize;
dlg.Level = env.Level;
dlg.MaxLelvel = env.MaxLevel;
if (dlg.ShowDialog() == DialogResult.OK)
{
env.Active = dlg.Active;
if (env.Active == Action.Delete) DeleteLastLevel();
else CreateOrEditLevel(dlg.IsCopy, dlg.LevelSize);
}
}
}
/// <summary>
/// 新建一关或者编辑当前关
/// </summary>
/// <param name="isCopy">新建时是否复制当前关</param>
/// <param name="size">新建关的尺寸</param>
void CreateOrEditLevel(bool isCopy, Size size)
{
if (env.Active == Action.Create)
{
env.NewLevel(isCopy, size);
if (Environment.OSVersion.Platform != PlatformID.WinCE)
ClientSize = env.GetClientSize(sbrMain.Visible ? sbrMain.Height : 0);
ClientSizeChanged();
}
env.Pen = Block.Land;
UpdateStatus();
}
/// <summary>
/// 删除最后一关
/// </summary>
void DeleteLastLevel()
{
env.Active = Action.None;
if (env.Level != env.MaxLevel - 1 || env.MaxLevel <= 1) return;
env.DeleteLastLevel();
miPrevLevel2OrSlot_Click(null, null);
}
/// <summary>
/// “设计”模式下, 鼠标点击时要采取的动作
/// </summary>
void Design()
{
Rectangle invalid;
if (!env.Design(out invalid)) return;
Invalidate(invalid);
UpdateStatus();
}
}
}
几点说明:
miDesign_Click 方法就是用来处理当用户在程序的主窗体中点击“菜单 -> 数据 -> 设计”时要采取的动作,她首先构造一个 DesignDlg 类(该类表示“设计”对话框),通过初始化该类的一些属性,将必要的参数(从表示“工作环境”的 Env 类中获得,参见“使用 C# 开发手机软件:推箱子(十一)”)传递进去,然后调用 DesignDlg 类的 ShowDialog 方法显示“设计”对话框。最后,如果用户在“设计”对话框中点击了“确定”按钮的话,就根据用户的选择进行相应的动作(调用 DeleteLastLevel 或 CreateOrEditLevel 方法)。
DeleteLastLevel 方法用于删除最后一关,该方法实际上调用 Env 类的相应方法来进行工作。
CreateOrEditLevel 方法用于新建一关或者编辑当前关,该方法实际上也是调用 Env 类的相应方法来进行工作。这时,整个程序进入“设计”模式,等待用户的动作。
Design 方法处理在“设计”模式下, 鼠标点击时要采取的动作,该方法实际上还是调用 Env 类的相应方法来进行工作。
上一篇:使用 C# 开发智能手机软件:推箱子(二十)
下一篇:使用 C# 开发智能手机软件:推箱子(二十二)
返回目录
系列文章的第二十一篇。在这篇文章中,介绍 Window/MainForm.Design.cs 源程序文件。这个源程序文件是 MainForm
类的一部分,该类继承自 System.Windows.Forms.Form 类,表示推箱子的主窗体。而本篇文章讲述的是推箱子“设计”的实际工作,如下图所示:
我们先看看 MainForm.Designer.cs 源程序文件(该文件是由 Visual Studio 2005 IDE 自动生成的)中和“设计”工作相关的部分:
namespace Skyiv.Ben.PushBox.Window
{
partial class MainForm
{
// 注意:省略了很多代码,仅保留和 miDesign 相关的部分。
private void InitializeComponent()
{
this.miDesign = new System.Windows.Forms.MenuItem();
this.miData.MenuItems.Add(this.miDesign);
this.miDesign.Text = "设计";
this.miDesign.Click += new System.EventHandler(this.miDesign_Click);
}
private System.Windows.Forms.MenuItem miDesign;
}
}
上述代码片断展示了在推箱子游戏的主窗体上点击“菜单 -> 数据 -> 设计”时发生的事件:
this.miDesign.Click += new System.EventHandler(this.miDesign_Click);
也就是弹出一个“设计”对话框(在上篇文章“使用 C# 开发智能手机软件:推箱子(二十)”中已经介绍过了),让用户选择“新建”、“编辑”、“删除”推箱子游戏的关卡。当用户选择完毕点击“确定”按钮后,实际发生的动作是在主窗体中完成的,由下面的 MainForm.Design.cs 源程序代码来实现:
1 using System;
2 using System.Drawing;
3 using System.Windows.Forms;
4 using Skyiv.Ben.PushBox.Common;
5
6 namespace Skyiv.Ben.PushBox.Window
7 {
8 partial class MainForm
9 {
void miDesign_Click(object sender, EventArgs e)
{
using (DesignDlg dlg = new DesignDlg(TopMost))
{
dlg.MaxLevelSize = env.MaxLevelSize;
dlg.LevelSize = env.LevelSize;
dlg.Level = env.Level;
dlg.MaxLelvel = env.MaxLevel;
if (dlg.ShowDialog() == DialogResult.OK)
{
env.Active = dlg.Active;
if (env.Active == Action.Delete) DeleteLastLevel();
else CreateOrEditLevel(dlg.IsCopy, dlg.LevelSize);
}
}
}
/// <summary>
/// 新建一关或者编辑当前关
/// </summary>
/// <param name="isCopy">新建时是否复制当前关</param>
/// <param name="size">新建关的尺寸</param>
void CreateOrEditLevel(bool isCopy, Size size)
{
if (env.Active == Action.Create)
{
env.NewLevel(isCopy, size);
if (Environment.OSVersion.Platform != PlatformID.WinCE)
ClientSize = env.GetClientSize(sbrMain.Visible ? sbrMain.Height : 0);
ClientSizeChanged();
}
env.Pen = Block.Land;
UpdateStatus();
}
/// <summary>
/// 删除最后一关
/// </summary>
void DeleteLastLevel()
{
env.Active = Action.None;
if (env.Level != env.MaxLevel - 1 || env.MaxLevel <= 1) return;
env.DeleteLastLevel();
miPrevLevel2OrSlot_Click(null, null);
}
/// <summary>
/// “设计”模式下, 鼠标点击时要采取的动作
/// </summary>
void Design()
{
Rectangle invalid;
if (!env.Design(out invalid)) return;
Invalidate(invalid);
UpdateStatus();
}
}
}
几点说明:
miDesign_Click 方法就是用来处理当用户在程序的主窗体中点击“菜单 -> 数据 -> 设计”时要采取的动作,她首先构造一个 DesignDlg 类(该类表示“设计”对话框),通过初始化该类的一些属性,将必要的参数(从表示“工作环境”的 Env 类中获得,参见“使用 C# 开发手机软件:推箱子(十一)”)传递进去,然后调用 DesignDlg 类的 ShowDialog 方法显示“设计”对话框。最后,如果用户在“设计”对话框中点击了“确定”按钮的话,就根据用户的选择进行相应的动作(调用 DeleteLastLevel 或 CreateOrEditLevel 方法)。
DeleteLastLevel 方法用于删除最后一关,该方法实际上调用 Env 类的相应方法来进行工作。
CreateOrEditLevel 方法用于新建一关或者编辑当前关,该方法实际上也是调用 Env 类的相应方法来进行工作。这时,整个程序进入“设计”模式,等待用户的动作。
Design 方法处理在“设计”模式下, 鼠标点击时要采取的动作,该方法实际上还是调用 Env 类的相应方法来进行工作。
上一篇:使用 C# 开发智能手机软件:推箱子(二十)
下一篇:使用 C# 开发智能手机软件:推箱子(二十二)
返回目录
相关文章推荐
- 使用 C# 开发智能手机软件:推箱子(十九)
- 使用 C# 开发智能手机软件:推箱子(十六)
- 使用 C# 开发智能手机软件:推箱子(七)
- 使用 C# 开发智能手机软件:推箱子(一)
- 使用 C# 开发智能手机软件:推箱子(十七)
- 使用 C# 开发智能手机软件:推箱子(十八)
- 使用 C# 开发智能手机软件:推箱子(十四)
- 使用 C# 开发智能手机软件:推箱子(三)
- 使用 C# 开发智能手机软件:推箱子(二)
- 使用 C# 开发智能手机软件:推箱子(十一)
- 使用 C# 开发智能手机软件:推箱子
- 使用 C# 开发智能手机软件:推箱子(二十)
- 使用 C# 开发智能手机软件:推箱子(十五)
- 使用 C# 开发智能手机软件:推箱子(六)
- 使用 C# 开发智能手机软件:推箱子(三)
- 使用 C# 开发智能手机软件:推箱子(十)
- 使用 C# 开发智能手机软件:推箱子(三)
- 使用 C# 开发智能手机软件:推箱子(十四)
- 使用 C# 开发智能手机软件:推箱子(五)
- 使用 C# 开发智能手机软件:推箱子(四)