频道栏目
读书频道 > 软件开发 > C# > 深入体验C#项目开发
1.6.1 事件处理程序
2013-03-27 13:17:24     我来说两句
收藏   我要投稿

本文所属图书 > 深入体验C#项目开发

C#是当今使用最为频繁的编程语言之一,一直在开发领域占据重要的地位。本书通过10个综合实例的实现过程,详细讲解了C#在实践项目中的综合运用过程。这些项目从作者的学生时代写起,到项目经理结束,一直贯穿于作...  立即去当当网订购

项目实例通过编写的事件处理程序实现对游戏的控制,例如单击【重新开始】按钮将激活“buttonReplay_Click”事件,用户可以重新开始玩新的游戏。在1.5节的窗体设计过程中,已经涉及了项目内的各个事件,在文件Form1.cs中定义了各个事件的实现代码。

1. 初始设置

这里的初始设置是指,通过using引用指令,然后定义命名空间,分别定义窗体类Form1和对应的构造函数,具体代码如下。

using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using youxi;
using System.IO;
namespace youxiApp
{
    public partial class Form1 : Form
    {
        private youxiControl youxiControl = new youxiControl();
        private youxiNext youxiNext = new youxiNext();
        private youxiScore youxiScore = new youxiScore();
        public Form1()
        {
            InitializeComponent();
            youxiControl.Top = menuStripMain.Height + 2;
            youxiControl.Left = 2;
            youxiControl.Parent = this;
            youxiControl.ImageList = imageList1;
            youxiNext.Parent = this;
            youxiNext.Top = youxiControl.Top;
            youxiNext.Left = youxiControl.Left + youxiControl.Width + 4;
            youxiControl.TetrisNext = youxiNext;
            youxiScore.Parent = this;
            youxiScore.Top = youxiNext.Top + youxiNext.Height + 4;
            youxiScore.Left = youxiNext.Left;
            youxiControl.TetrisScore = youxiScore;
            style1ToolStripMenuItem.Image = imageList1.Images[0];
            style2ToolStripMenuItem.Image = imageList2.Images[0];
            style3ToolStripMenuItem.Image = imageList3.Images[0];
            youxiControl.ProgressBar = progressBarReview;
            openFileDialog1.FileName = Path.GetDirectoryName
               (Application.ExecutablePath) +@"\sample.trf";
            saveFileDialog1.FileName = Path.GetDirectoryName(Application.
                ExecutablePath) +@"\sample.trf";
        }
    }
}

2. 编写事件处理代码

通过单击窗体Form1内的各个控件和组件,可以执行对应的事件处理程序,实现游戏的运行和对游戏的控制。在1.5节的窗体设计过程中,我们已经了解了各控件的执行事件名称,在此我们只对事件的具体处理代码进行介绍。

1) 右侧按钮控件的处理事件

右侧按钮控件是指【重新开始】按钮、【保存】按钮、【载入】按钮、【速度设置】滑动条和Review按钮,各控件对应事件的处理代码如下。

private void buttonReplay_Click(object sender, EventArgs e)
{
    youxiControl.Replay(true, false);
}
private void buttonReview_Click(object sender, EventArgs e)
{
    youxiControl.Review();
}
private void trackBar1_Scroll(object sender, EventArgs e)
{
    youxiControl.ReviewSpeed = trackBarReviewSpeed.Value;
}
private void buttonSave_Click(object sender, EventArgs e)
{
    if (saveFileDialog1.ShowDialog() != DialogResult.OK) return;
    if (Path.GetExtension(saveFileDialog1.FileName) == string.Empty)
        saveFileDialog1.FileName =
            Path.ChangeExtension(saveFileDialog1.FileName, ".trf");
    youxiControl.SaveToFile(saveFileDialog1.FileName);
}
private void buttonLoad_Click(object sender, EventArgs e)
{
    if (openFileDialog1.ShowDialog() != DialogResult.OK) return;
    if (!File.Exists(openFileDialog1.FileName)) return;
    youxiControl.LoadFromFile(openFileDialog1.FileName);
}

2) 窗体菜单的处理事件

窗体菜单是指窗体顶部的【文件】、【设置选项】、【游戏帮助】3个菜单,并包含它们的各子菜单。上述各菜单对应事件的处理代码如下。

private void replayToolStripMenuItem_Click(object sender, EventArgs e)
{
    buttonReplay_Click(buttonReplay, new EventArgs());
}
private void saveToolStripMenuItem_Click(object sender, EventArgs e)
{                                                                   
    buttonSave_Click(buttonSave, new EventArgs());
}
private void loadToolStripMenuItem_Click(object sender, EventArgs e)
{
    buttonLoad_Click(buttonLoad, new EventArgs());
}
private void reviewToolStripMenuItem_Click(object sender, EventArgs e)
{
    buttonReview_Click(buttonReview, new EventArgs());
}
private void exiToolStripMenuItem_Click(object sender, EventArgs e)
{
    Close();
}
private void keyBoardToolStripMenuItem_Click(object sender, EventArgs e)
{
    MessageBox.Show("左移: Left、A\r\n右移: Right、D\r\n" +"下移: Down、
        S\r\n变换: Up、W\r\n变化: Back、F\r\n直下: Space、J、Enter","按键说明");
}
private void blogToolStripMenuItem_Click(object sender, EventArgs e)
{
    Process.Start("http://blog.sina.com.cn/u/589d32f5010008ls");
}
private void aboutToolStripMenuItem_Click(object sender, EventArgs e)
{
    MessageBox.Show("俄罗斯方块\r\n设计: 天涯沦落人\r\n" +
        "日期: 2008-12-24\r\n联系: xxx@126.com", "关于本程序");
}
private void style1ToolStripMenuItem_Click(object sender, EventArgs e)
{
    if (sender == style1ToolStripMenuItem)
        youxiControl.ImageList = imageList1;
    else if (sender == style2ToolStripMenuItem)
        youxiControl.ImageList = imageList2;
    if (sender == style3ToolStripMenuItem)
        youxiControl.ImageList = imageList3;
}
private void replayExtendedToolStripMenuItem_Click(object sender, EventArgs e)
{
    youxiControl.Replay(true, true);
}

您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:1.6 编码实现
下一篇:1.6.2 游戏控制、处理方法
相关文章
图文推荐
排行
热门
最新书评
特别推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站