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;
namespace Event_Delegate_Action
{
public delegate void NameChangedEventHandler(string name);
public delegate void IDNameEventHandler(int id, string name);
public partial class frmDelegateEvents : Form
{
Person Test;
Server MyServer;
public frmDelegateEvents()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Test = new Person() { Name = "Default" };
Test.NameChanged += Test_NameChanged;
Test.Name = "NewName";
MyServer = new Server();
MyServer.EvHaSend += MyServer_EvHaSend;
MyServer.EvHaError += MyServer_EvHaError;
MyServer.EvHaReceived += MyServer_EvHaReceived;
MyServer.EvIDName += MyServer_EvIDName;
}
private void MyServer_EvIDName(int id, string name)
{
MessageBox.Show($"{id} {name}", "MyServer_EvIDName Info...", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
private void MyServer_EvHaReceived(object sender, ServerEventArgs e)
{
}
private void MyServer_EvHaError(object sender, ServerEventArgs e)
{
}
private void MyServer_EvHaSend(object sender, ServerEventArgs e)
{
MessageBox.Show($"{e.ID} {e.Message}", "Info...", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
private void Test_NameChanged(string name)
{
// throw new NotImplementedException();
MessageBox.Show(name, "Info...", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
static int BoardId = 0;
private void btnSendMessage_Click(object sender, EventArgs e)
{
string tag;
tag = $@"";
MyServer.SendMessage(tag);
MyServer.SendMessage(2911, "test with id and a message");
}
}
enum MessageTypes
{
Wait,
Status,
MessageSend,
MessageReceived,
Error
}
public class ServerEventArgs : EventArgs
{
internal int ID { get; set; }
internal string Message { get; set; }
internal MessageTypes MessageType { get; set; }
}
public class Server
{
public event EventHandler EvHaReceived;
public event EventHandler EvHaSend;
public event EventHandler EvHaError;
public event IDNameEventHandler EvIDName;
public void SendMessage(string message)
{
// EvHaSend?.Invoke(this, new ServerEventArgs() { ID = 3123, Message = @"Answer", MessageType = MessageTypes.MessageSend });
EvHaSend?.Invoke(this, new ServerEventArgs() { ID = 3123, Message = message, MessageType = MessageTypes.MessageSend });
}
public void SendMessage(int id, string message)
{
EvIDName?.Invoke(id, message);
}
}
public class Person
{
//This is the event
//The subscribers of the event, should have the same signature
//as the delegate that used to define the event
public event NameChangedEventHandler NameChanged;
private string name;
public string Name
{
get { return name; }
set
{
name = value;
//Raise the event = calling all the subscribers delegate
NameChanged?.Invoke(value);
}
}
}
}