有没有办法将eventargs参数从文本框转换为字符串?

Is there a way to turn the eventargs argument from a textbox into a string?

提问人:pingouin_afk 提问时间:12/24/2022 最后编辑:Reza Aghaeipingouin_afk 更新时间:1/28/2023 访问量:122

问:

这是我使用 Windows 窗体在 C# 中的第一个实际项目,我试图知道输入到我的文本框中的字母数是否优于 11,所以我使用

if (e[10] != null)

但我很快意识到这仅适用于字符串,并且“e”不是字符串,而是“EventArgs”类型。有什么方法可以从中获取字符串吗?

C# .NET WinForms 事件

评论

3赞 derpirscher 12/24/2022
取决于事件。 是一种非常基本的类型。所以它不会携带太多信息。您可能应该从您的事件中获取文本......如果字符串长度不至少为 11 个字符,Furhtermore 将抛出异常EventArgssendersomestring[10]
0赞 Klaus Gütter 12/24/2022
将发送方强制转换为 TextBox,然后获取 Text.Length
1赞 Jimi 12/24/2022
if (int.TryParse((sender as TextBox).Text, out int value)) { // evaluate value }
0赞 Avrohom Yisroel 12/25/2022
除了其他(优秀的)注释之外,作为一般规则,如果您检查特定 -derived 类的属性,您应该会发现它具有一些有用的属性。具体而言,通常会找到相关控件的数据(在本例中为文本框的文本)。EventArgs
0赞 Reza Aghaei 1/28/2023
假设您的文本框是 name ,要检查在文本框中输入的文本的长度,您可以这样做,然后您可以显示如下消息:textBox1if(textBox1.Text.Length >10)MessageBox.Show("More than 10 characters?!Why?! 😡");

答:

0赞 Reza Aghaei 1/28/2023 #1

并非所有事件参数都有用;通常有用的是那些特殊类型,如 MouseEventArgFormClosingEventArgs,它们携带一些有关事件的有用信息,例如单击鼠标的点,或表单的关闭方式等。

因此,在这里,您不需要将事件参数转换为字符串或尝试从中读取任何内容。您要查找的信息不存在。

在许多情况下,您只需要控件中的信息,例如,这里您对输入长度感兴趣,因此无论您使用哪个事件处理程序(Button 的 Click 事件或 TextBox 的 TextChanged 事件),您都可以检查 TextBox 的属性。这里假设是你感兴趣的那个,只需检查其 Text 属性的长度,如下所示,如果它比预期的长,则显示友好的验证消息:textBox1

if(textBox1.Text.Length >10)
{
    MessageBox.Show("More than 10 characters?!Why?! 😡");
}

一些快速说明:

  • 如果事件参数具有特殊类型,请检查其属性以查看是否有任何有用之处e
  • sender 参数是引发事件的控件,例如,在按钮上的单击事件中,它是按钮,或者在文本框的文本更改事件中,它是文本框,因此您可以像 .var btn = (Button)sender;
  • 无论发送者是谁,您都可以检查其中的所有内容,例如检查另一个控件的属性,例如textBox1.Text