关于扫雷游戏学习笔记(二)

用户控件与窗体之间的传值:要实现当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 += 事件处理函数名;
        }  

 

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

 

 

转载于:https://www.cnblogs.com/zuochengsi-9/p/4661696.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值