首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# -分层分离-如何使用这些委托?

C# -分层分离-如何使用这些委托?
EN

Stack Overflow用户
提问于 2016-04-21 23:45:08
回答 1查看 42关注 0票数 0

以下是相关代码:

ClickMeGame.cs

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ClassLibrary
{
    public class ClickMeGame
{
    public OnClickMe onClickMeCallback;

    public int score;

    public ClickMeGame()
    {
        score = 0;
    }

    private void IncrementScore()
    {
        score++;
    }
}
}

ClickMeCallBackDefinitions.cs

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ClassLibrary
{
    public delegate void OnClickMe();
}

MainWindow.cs (Windows窗体)

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using ClassLibrary;

namespace ClickMe
{
    public partial class mainWindow : Form
{
    private ClickMeGame game;

    public mainWindow()
    {
        InitializeComponent();

        game = new ClickMeGame();
        game.onClickMeCallback = clickMeButton_Click();

    }

    private void clickMeButton_Click(object sender, EventArgs e)
    {
        UpdateUI(); 
    }

    private void UpdateUI()
    {
        scoreLabel.Text = string.Format("The score is: {0}", game.score);
    }
}
}

所以我想要做的是,当用户点击表单上的一个按钮时,我希望表单上的标签随着游戏分数的增加而更新,每次点击都会增加。

我正在学习/希望能够使用委托来完成这一任务,因为我希望将项目划分为两个层次:预演和逻辑。我知道这样做是没有必要的,但我希望这样做:当您单击按钮时,Windows窗体通过委托/回调方法接收有关游戏得分的信息。我不知道该怎么做,但我试着做了回调定义并引用了它,但是我迷失了方向。

EN

回答 1

Stack Overflow用户

发布于 2016-04-21 23:53:43

假设UI按钮使用单击事件clickMeButton_Click,那么您就可以开始了。

代码语言:javascript
复制
public partial class mainWindow : Form
{
    private ClickMeGame game;

    public mainWindow()
    {
        InitializeComponent();

        game = new ClickMeGame();
        game.onClickMeCallback = param => UpdateUI();

    }

    private void clickMeButton_Click(object sender, EventArgs e)
    {
        game.onClickMeCallback.Invoke(); 
    }

    private void UpdateUI()
    {
        scoreLabel.Text = string.Format("The score is: {0}", game.score);
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36782321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档