You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows Forms中TextBox事件方法返回类型错误问题求助

解决.NET WinForm中TextBox TextChanged事件返回类型错误(CS0407)

错误原因

TextBox的TextChanged事件对应的委托是EventHandler,该委托强制要求事件处理方法的返回类型为void。你把textBox1_TextChanged和textBox2_TextChanged的返回类型改成string后,和Form1.Designer.cs文件中自动生成的事件注册代码签名不匹配,因此触发CS0407错误。

解决方案

事件处理方法是被动触发的(文本变化时自动执行),不是用来主动调用获取输入值的。正确做法如下:

  1. 将两个TextChanged事件方法恢复为void返回类型;
  2. 在按钮点击事件中直接读取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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 11:22:12