将函数从一种形式传递到另一种形式时遇到此问题。如何解决?
登录:
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
...
}
主要的:
...
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".
代码中标记为“问题”的问题
对于事件
Sock.Client.OnConnect
,您需要使用适当的签名订阅方法,而不是类Sock.Client.OnDataReceived
实例。Sock.Client.OnServerDisconnect
MainClient
看看事件是如何描述的
Sock.Client.OnConnect
,它有什么参数。获取类中具有相同参数的方法MainClient
(名称无关紧要,例如)。ConnectHandler
然后你可以写:同样 - for
OnDataReceived
和OnServerDisconnect
。但是为什么要为属于该类的对象
MainClient
分配事件处理程序Login
呢?