作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在编写一个 C# 程序,它接受一堆参数并对数据点进行一些转换,然后将它们绘制到屏幕上。
在我的一个表单上,我有一堆文本框,我都想执行相同的 KeyPress 事件。在我只做一个 switch 语句之前,它只接收 KeyPress 事件的发送者并将其与所有 TextBox 进行比较。这种方法对我来说似乎不是很有效,因为现在我有 20 多个文本框。
我想做的是找到表单上的哪个 TextBox 发送了 KeyPress 事件,并从该 TextBox 获取更多信息(即它的 Text 值等)。这将使我省去必须与发件人进行巨大切换以查看它也相等的 TextBox 的麻烦。但我一直在经历最艰难的时期。
我查看了 System.Windows.Controls 和 System.Windows.Forms 类,看是否能找到任何对我有帮助的东西。我正在寻找的是能让我看到哪个控件具有焦点的东西。也许这就是我应该一直在寻找的东西?我还查看了我可以在 KeyPress 事件中对 sender 做些什么,看看我是否能弄清楚是什么 TextBox 引发了该事件,但仍然没有成功。
此时我觉得自己更糊涂了。任何帮助将不胜感激。
最佳答案
发件人方法应该没问题。但是,您可以投:
TextBox txt = (TextBox) sender; // or "as" if you aren't sure.
// you can also just cast to Control for most
// common properties
// perhaps look at txt.Name, txt.Text, or txt.Tag
请注意,在某些情况下,发件人不是您所想的那样,但这种情况很少见,主要与通过以下代码进行的事件转发有关:
public event EventHandler AcceptClick {
add { acceptButton.Click += value;}
remove { acceptButton.Click -= value;}
}
在这里,sender
将是 acceptButton
,您看不到。不过,这通常不是问题。
关于c# - 如何在所谓的事件中找到哪个控件引发了事件?视觉 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1866741/
我是一名优秀的程序员,十分优秀!