0
下面是相關代碼:C# - 層分離 - 如何使用這些代表?
ClickMeGame.cs
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
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窗體)
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窗體通過代理/回調方法接收關於遊戲得分的信息。我不確定如何做到這一點,但我嘗試了回調定義並引用它,但是我從那裏失去了。
只要寫'game.onClickMeCallback = UpdateUi; –