2012-06-20 4 views
0

я хочу следующее на 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(); 
+0

Если управление отключено, он не получит событие click. Вам нужно будет сохранить состояние «включено» отдельно и проверить свой флаг в обработчике событий кликов. – ChrisF

+0

Окрашенный внешний вид должен указывать на то, что его отключили, и если вы хотите добавить что-нибудь еще, по крайней мере, отключить «ToolTip» как лучший вариант. – V4Vendetta

+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(); 
} 
+0

Кажется - это сработает. Спасибо всем. – Buena

1

Если кнопка отключена, она не будет получать события Click. Таким образом, единственный способ - включить его и использовать пользовательский флаг для хранения состояния.

+0

Что такое пользовательский флаг? – Buena

+0

@Buena создайте свою собственную переменную 'bool' и используйте ее вместо использования' btn1.Enabled' –

+0

Было бы странным пользовательским интерфейсом, что при нажатии он ничего не сделал. – V4Vendetta

1

Вы не можете сделать это в случае OnMouseClick вашей формы (получающий MouseEventArgs е):

Control control = GetChildAtPoint(e.Location); 

if (control != null) 
{ 
} 

Из этого можно сделать некоторые грязные вещи, чтобы получить тип управления и его состояние и звуковой сигнал если необходимо. Во всяком случае, я бы не хотел использовать приложение, постоянно пишущее ;-)

+0

Это довольно грязно –

+0

без звукового сигнала пользователь может продолжать нажимать на элемент управления. Он может подумать, что может быть что-то не так с мышью или клавиатурой ... – Buena

1

Если вы делаете элементы управления отключенными вручную, вместо отключения кнопок вы можете просто изменить стиль кнопки для отключения. И в событии click проверьте стиль кнопки. Если вы можете объяснить, почему вы хотите, что функциональность мы можем помочь более возможно