所以我试图使用表单上的方法更新表单上的控件
public partial class frmClient : Form
{
// Socket socket;
string IP;
string PORT;
SocketManager socketManager;
public frmClient()
{
InitializeComponent();
}
private void btnConnect_Click(object sender, EventArgs e)
{
IP = txtIP.Text;
PORT = txtPort.Text;
socketManager = new SocketManager(IP, PORT);
// SocketManager();
}
public void OpenApp()
{
GUI _GUI = new GUI();
_GUI.ShowDialog();
}
public void UpdateConnect(string status) {
if (status == "Connected") {
Console.WriteLine("Hello Socket Manager");
btnConnect.Enabled = false;
this.Hide();
}
}
}
这是我创建Form类的方式,我只是使用SocketIoClientDotNet连接到另一个将成为我的套接字管理器的类文件,我还有一个小的节点服务器设置来接受连接。
这是我的SocketManager类:
class SocketManager {
frmClient Client = new frmClient();
public SocketManager(string IP, string PORT) {
try {
Socket socket = IO.Socket("http://" + IP + ":" + PORT);
socket.On(Socket.EVENT_CONNECT, () =>{
Client.UpdateConnect("Connected");
});
} catch {
MessageBox.Show("Invalid Server");
}
}
}
对我来说这只是一个小练习项目,问题是当我运行此代码时,我与服务器连接,便建立了连接,当代码通过“ UpdateConnect”方法运行时,我的确输入了WriteLine控制台,但是无论我如何尝试,我的按钮都不会更新。
我尝试使用Invoke,但是它说不需要Invoke,如果有人可以帮助我理解为什么我的按钮没有被禁用,我将不胜感激,谢谢!