Windows Forms中TextBox事件方法返回类型错误问题求助
解决.NET WinForm中TextBox TextChanged事件返回类型错误(CS0407)
错误原因
TextBox的TextChanged事件对应的委托是EventHandler,该委托强制要求事件处理方法的返回类型为void。你把textBox1_TextChanged和textBox2_TextChanged的返回类型改成string后,和Form1.Designer.cs文件中自动生成的事件注册代码签名不匹配,因此触发CS0407错误。
解决方案
事件处理方法是被动触发的(文本变化时自动执行),不是用来主动调用获取输入值的。正确做法如下:
- 将两个TextChanged事件方法恢复为
void返回类型; - 在按钮点击事件中直接读取TextBox的
Text属性获取输入值。
修正后的代码
private void button1_Click(object sender, EventArgs e) { // 直接读取TextBox的Text属性获取输入值 string User_name = textBox1.Text; string Pswd = textBox2.Text; string connection_string = $"server=localhost;database=practice;uid={User_name};pwd={Pswd};"; // 使用using自动释放连接资源,避免连接泄漏 using (MySqlConnection conn = new MySqlConnection(connection_string)) { try { conn.Open(); MessageBox.Show("Connection Established !"); } catch (Exception ex) { MessageBox.Show($"Cannot open Connection !\nErr code : {ex}"); } } } // 恢复为void返回类型的TextChanged事件处理方法 private void textBox1_TextChanged(object sender, EventArgs e) { // 如需在文本变化时执行其他逻辑(如输入验证),可在此编写 } private void textBox2_TextChanged(object sender, EventArgs e) { // 同理,可添加密码输入相关逻辑(如显示/隐藏密码) }
额外提示
- 不要修改Form1.Designer.cs中的自动生成代码,否则极易引发签名不匹配类错误;
- 用
using包裹数据库连接,能确保连接在使用后自动释放,避免数据库连接池耗尽; - 实际项目中建议对用户名、密码输入做合法性验证,比如非空检查。
内容的提问来源于stack exchange,提问作者Black Operative
相关产品推荐
相关产品推荐

