提问人:pingouin_afk 提问时间:12/24/2022 最后编辑:Reza Aghaeipingouin_afk 更新时间:1/28/2023 访问量:122
有没有办法将eventargs参数从文本框转换为字符串?
Is there a way to turn the eventargs argument from a textbox into a string?
问:
这是我使用 Windows 窗体在 C# 中的第一个实际项目,我试图知道输入到我的文本框中的字母数是否优于 11,所以我使用
if (e[10] != null)
但我很快意识到这仅适用于字符串,并且“e”不是字符串,而是“EventArgs”类型。有什么方法可以从中获取字符串吗?
答:
0赞
Reza Aghaei
1/28/2023
#1
并非所有事件参数都有用;通常有用的是那些特殊类型,如 MouseEventArg 或 FormClosingEventArgs,它们携带一些有关事件的有用信息,例如单击鼠标的点,或表单的关闭方式等。
因此,在这里,您不需要将事件参数转换为字符串或尝试从中读取任何内容。您要查找的信息不存在。
在许多情况下,您只需要控件中的信息,例如,这里您对输入长度感兴趣,因此无论您使用哪个事件处理程序(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
评论
EventArgs
sender
somestring[10]
if (int.TryParse((sender as TextBox).Text, out int value)) { // evaluate value }
EventArgs
textBox1
if(textBox1.Text.Length >10)
MessageBox.Show("More than 10 characters?!Why?! 😡");