Столкнулся с данной проблемой при передачи функции из одной формы в другую. Как её решить?
Login:
private MainClient OnConnect;
private MainClient OnDataReceived;
private MainClient OnServerDisconnect;
public Login(MainClient OnConnect, MainClient OnDataReceived, MainClient OnServerDisconnect)
{
InitializeComponent();
this.OnConnect = OnConnect;
this.OnDataReceived = OnDataReceived;
this.OnServerDisconnect = OnServerDisconnect;
}
private void buttonLogin_Click(object sender, EventArgs e)
{
...
MainClient._client = new Sock.Client { BufferSize = 1048576 };
MainClient._client.OnConnect += OnConnect; //Problem
MainClient._client.OnDataReceived += OnDataReceived; //Problem
MainClient._client.OnServerDisconnect += OnServerDisconnect; //Problem
...
}
Main:
...
public static Sock.Client _client = new Sock.Client();
public static ClientInfo _clientInfo = new ClientInfo();
...
private void runLoginScreen()
{
Application.Run(new Login(this, this, this));
}
Проблема Не удается неявно преобразовать тип "Project_Name.Main" в "Sock.Client.ServerDisconnectedEventHanlder". Помечена в коде как "Problem"
К событиям Sock.Client.OnConnect, Sock.Client.OnDataReceived и Sock.Client.OnServerDisconnect нужно подписывать методы с соответствующими сигнатурами, а не инстансы класса MainClient.
Посмотрите, как описано событие Sock.Client.OnConnect, какие у него параметры. Заведите в классе MainClient метод (название - неважно, например, ConnectHandler) с такими же параметрами. Тогда Вы сможете написать:
private MainClient mainClient;
public Login(MainClient aMainClient)
{
InitializeComponent();
this.mainClient = aMainClient;
}
private void buttonLogin_Click(object sender, EventArgs e)
{
...
MainClient._client = new Sock.Client { BufferSize = 1048576 };
MainClient._client.OnConnect += mainClient.ConnectHandler; //No problem
...
Аналогично - для OnDataReceived и OnServerDisconnect.
Только почему у Вас обработчики событий объекта, который принадлежит классу MainClient, назначает Login?
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости