zoukankan      html  css  js  c++  java
  • 关于扫雷游戏学习笔记(二)

    用户控件与窗体之间的传值:要实现当MineField中扫雷成功或失败,笑脸图标做出相应的改变。


    1、通过构造函数传参

    //MineField类中
    public PictureBox smile;
    
    public MineField(PictureBox pb)
    { 
          smile=pb;
          InitializeComponent();
    }
    
    //在Form.Designer中的InitializeComponent里加入
    this.mineField1 = new Mine.MineField(pictureBox1);

    这样在MineField中便可以直接调用外面的PictureBox了。
    但是会存在一个问题:窗体设计器生成的代码最好不要去修改,每次只要设计窗口一变动,Form.Designer里的代码就会重新生成,你添加的

    this.mineField1 = new Mine.MineField(pictureBox1);

    便无效,Form[设计]还会报很奇怪的异常。
    2、通过事件触发机制

    //在MineField中
    
     public delegate void MineSweepedEventSuccessfullyHandler();
    public event MineSweepedEventSuccessfullyHandler   MineSweepedSuccessfully;
    
     public delegate void MineSweepedFalledHandler();
     public event MineSweepedFalledHandler MineSweepedFalled;
    
    
     public void Falling()
            {
                if (MineSweepedFalled != null)
                {
                    MineSweepedFalled();
                }
            }
    
            public void Successful()
            {
                if (MineSweepedSuccessfully != null)
                {
                    MineSweepedSuccessfully();
                }
            }
       if(扫雷成功)  Successful();
       if(扫雷失败)  Falling();        //触发事件
     
    
    //Form中 
    
     private void Form1_Load(object sender, EventArgs e)
            {
                this.mineField1.Init(10, 10);
                this.mineField1.MineSweepedFalled +=事件处理函数名;
          this.mineField1.MineSweepedSuccessfully += 事件处理函数名;
            }  

    通过这个例子,我对事件这个概念有了更进一步的了解。

     

  • 相关阅读:
    iOS TTF文件改变字体
    iOS CoreAnimation 核心动画
    iOS no visible @interface for 'UIButton' declares the selector errors
    iOS 如何通过CocoaPods添加第三方框架
    iOS AVAudioPlayer播放音乐
    iOS 一些常用代码的总结
    iOS 基础
    qworker 实例
    delphi RTTI 反射技术
    delphi IOUtils单元 处理文件路径相关
  • 原文地址:https://www.cnblogs.com/zuochengsi-9/p/4661696.html
Copyright © 2011-2022 走看看