我有一个Windows窗体应用程序与多个按钮。我需要检索单击的任何按钮的文本属性,以创建对数据库的查询。我知道的唯一方法是创建一个按钮点击事件并将发件人作为按钮,然后为每个按钮做一个开关盒,这看起来非常忙碌,因为我可能在整个应用程序中会有100多个按钮。所以我的问题是,我可以创建一个通用的按键方法,它可以检索按下/单击窗体上的任何按钮的文本属性?如果问题不是很清楚,请原谅。任何帮助将不胜感激如何检索在一个单一的方法窗口中点击的按钮的文本
回答
对所有类似的按钮使用单击事件处理程序。这样,每个按钮都会有点击事件,但只有一个方法会针对所有按钮执行。您可以确定按下了哪个按钮。 使用发件人对象如下;
private void button_Click(object sender, EventArgs e)
{
var buttonText = ((Button)sender).Text;
//Query using buttonText
}
更新: 上面的回答还是会要求你订阅点击事件为每个按钮。如果你不想那么再看看下面的方法;
您可以使用(ClickTransparentButton或)禁用(Enabled=false)
所有这些按钮并在父窗体上添加单击事件。一旦你得到点击事件,你可以得到如下点击的按钮;
private void Form1_Click(object sender, EventArgs e)
{
var p = PointToClient(Cursor.Position);
var control = GetChildAtPoint(p);
if(control is Button)
{
var buttonText = ((Button)control).Text;
//Query using buttonText
}
}
但是这样做有一些缺点,例如,您将无法使用键盘操作这些按钮。 更多...
你好thanx为即时答案。但上面的代码你已经建议,仍然会要求我为每个按钮编写一行代码附加到这个事件,如果我理解正确。或者是否有一个方法或一行代码可以将所有按钮附加到此自定义处理程序? –
更新了答案。看看它现在对你有用吗? –
创建一些功能按钮单击处理程序:
private void buttonClickHandler(object sender, EventArgs e) { string buttonName = (sender as Button).Text; }
2A。连接点击每个按钮的事件到这个处理程序。
2B。要自动连接按钮点击处理程序使用类似的东西:
private void connectButtonsHandlers()
{
foreach(var c in this.Controls)
{
if(c is Button)
{
(c as Button).Click += buttonClickHandler;
}
}
}
添加此代码以形成构造函数以在程序启动时执行连接。
所以这意味着我仍然需要为每个按钮编写代码来连接到这个处理程序的权利?但我正在寻找一种方法,可以订阅所有按钮到这个事件处理程序?那可能吗? –
答复已更新。 – fat
- 1. 点击一个按钮来检索的文本区域
- 2. C#通过单击另一个窗口的按钮打开一个窗口
- 3. 如何在extjs中点击一个按钮后打开一个窗口
- 4. 模拟单击C中另一个窗口中的按钮#
- 5. 如何在wxpython中点击一个按钮来创建额外的窗口
- 6. 点击时你会如何让按钮显示一个窗口?
- 7. 如何打开一个新窗口点击按钮
- 8. 如何使一个浏览窗口按钮被点击
- 9. 点击一个按钮,检测的jQuery
- 10. 如何点击另一个按钮上方的按钮?
- 11. 单击UserControl上的按钮如何在包含的窗口中执行方法?
- 12. Selenium在一个新打开的窗口中单击一个按钮
- 13. 如何点击一个窗口的'下一步'按钮使用python
- 14. 如何强制用户只在一个活动窗口中单击一个按钮,而无法点击其他窗口中的内容?
- 15. 如何从另一个窗体中单击一个窗体的按钮?
- 16. 如何在android中点击一个按钮来更改文本?
- 17. 如何用一个文本点击一个按钮?
- 18. Jquery:点击按钮时打开一个新的HTML窗口
- 19. 当单选按钮的一个点击
- 20. 打开一个弹出窗口,点击一个用户控件中的按钮
- 21. 如何关闭一个窗口,当你点击一个按钮打开另一个窗口
- 22. 如何触发一个新窗口从Angular 2中的按钮单击打开
- 23. 在按钮上点击另一个窗口?
- 24. 如何检测鼠标点击一个按钮,下拉菜单
- 25. 如何点击打开的窗口中的按钮
- 26. Selenium在页面部分搜索文本并点击其中的一个按钮
- 27. 如何触发一个弹出消息点击jqueryui窗口的关闭按钮?
- 28. 生成一个新的文本文件每个按钮点击
- 29. 如何将文本从一个文本框用一个按钮点击
- 30. 如何检测QtWebKit中的窗体重置按钮的点击?
如果您能够将发件人转换为Button,那么您可以轻松访问control.Text属性?为什么你需要根据我不需要的开关 –
我有同样的问题。为什么你不能((Button)sender).Text检索文本?你为什么需要这个开关? – GuidoG