gpt4 book ai didi

c# - 如何在所谓的事件中找到哪个控件引发了事件?视觉 C#

转载 作者:太空狗 更新时间:2023-10-29 22:07:44 30 4
gpt4 key购买 nike

我正在编写一个 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/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com