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 += 事件处理函数名;
            }  

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

     

  • 相关阅读:
    java 支付宝即时到帐提交订单dome
    C#字符串string的常用使用方法(转载)
    UltraEdit 回车符替换空格
    java 七牛上传图片到服务器(采用的html5 压缩 传输base64方式)
    c# 多播委托
    c# 泛型委托
    c# 求数组的最大值
    c# 匿名函数和lamda表达式语法
    匿名函数和lamda表达式
    导出Excel之Epplus使用教程4(其他设置)
  • 原文地址:https://www.cnblogs.com/zuochengsi-9/p/4661696.html
Copyright © 2011-2022 走看看