如何点击禁用的控件发出哔声?

时间:2012-06-20 10:46:42

标签: c# winforms

我想在btn1.Click上提供以下内容:

if (btn1.Enabled == false) System.Media.SystemSounds.Beep.Play();  

虽然btn1被禁用,有没有办法发出哔哔声?

事实上,默认情况下我需要这样的东西:

foreach (controls c in Form1.Controls)
if (c is clicked && c.Enabled == false)
System.Media.SystemSounds.Beep.Play();

4 个答案:

答案 0 :(得分:5)

您可以向表单添加点击事件,并获取位于点击位置的控件:

private void Form1_Click(object sender, EventArgs e)
{
  var p = PointToClient(Cursor.Position);
  var c = GetChildAtPoint(p);
  if (c != null && c.Enabled == false)
    System.Media.SystemSounds.Beep.Play();
}

答案 1 :(得分:1)

如果禁用了按钮,则不会接收Click事件。所以唯一的方法是启用它并使用自定义标志来存储状态。

答案 2 :(得分:1)

你不能在表单的OnMouseClick事件中执行此操作(接收MouseEventArgs e):

Control control = GetChildAtPoint(e.Location);

if (control != null)
{
}

由此,您可以执行一些脏操作来检索控件类型及其状态,并在必要时发出蜂鸣声。无论如何,我讨厌使用应用程序一直发出哔哔声; - )

答案 3 :(得分:1)

如果要手动禁用控件,而不是禁用按钮,只需将按钮的样式更改为禁用即可。点击事件检查按钮的样式。如果你能解释为什么你想要这个功能,我们可以提供更多帮助