Сценарий -
Программа открывает winForm. Пользователь вводит информацию, нажимает кнопку Пуск. Действие переносится в код в App_Code.Model. Когда этот код завершается, код winForm должен отображать обновленную информацию. App_Code.Model не должен знать о winForm. В этом случае winForm имеет кнопку btnStart и текстовое поле tbInput.
Но когда событие поднято, оно пустое, поэтому я что-то делаю не так. Обратите внимание, что речь идет не о событиях, вызванных пользовательскими элементами управления winForms, я знаю, что в Интернете есть много информации об этом.
App_Code.Model
используя Систему;
using System.Collections.Generic;
использование System.Linq;
используя System.Text;
namespace EventsTest.App_Code.Model
{
public delegate void TableViewChangeHandler(object sender, HandChangedEventArgs e);
public class HandChangedEventArgs : EventArgs{
public int HandNum { get; set; }
public int PlayerNum { get; set; }
public HandChangedEventArgs(int handNum, int playerNum){
HandNum = handNum;
PlayerNum = playerNum;
}
}
public class Game{
public event TableViewChangeHandler TableViewChanged;
public void PrepareGame(){
int value = -1;
if (TableViewChanged != null)
TableViewChanged(this, new HandChangedEventArgs(value, 0));
else
value = 2;//used to set toggle to catch debugger
}
}
}
код формы
используя Систему;
using System.Collections.Generic;
using System.ComponentModel;
используя System.Data;
использование System.Drawing;
использование System.Linq;
используя System.Text;
использование System.Windows.Forms;
using EventsTest.App_Code.Model;
namespace EventsTest
{
public partial class testForm : Form{
public testForm(){
InitializeComponent();
Game myGame = new Game();
myGame.TableViewChanged += this.HandleTableViewChange;
}
private void btnStart_Click(object sender, EventArgs e) {
Game myGame = new Game();
myGame.PrepareGame();
}
public void HandleTableViewChange(object sender, HandChangedEventArgs e){
this.tbInput.Text = "Raised";
}
}
}