Есть ли какой-либо способ отменить событие щелчка мыши

#c# #winforms #events

#c# #winforms #Мероприятия

Вопрос:

Я хочу отменить щелчок мыши, наведение курсора мыши вверх или опускание курсора мыши, даже если это происходит в моем элементе управления .NET.

Я надеялся, что в EventArgs будет параметр Cancel, но я не вижу такого, как в TreeView.BeforeCheck .

Есть ли другой способ, которым я мог бы сделать это или другое событие, которое я должен прослушать?

Комментарии:

1. Причина, по которой я задал этот вопрос, заключалась в возникшей у меня проблеме, которая, по-видимому, является ошибкой в TreeView: social.msdn.microsoft.com/Forums/en-US/winforms/thread / …

Ответ №1:

Просто переопределите обработчик и не вызывайте функцию базового класса.

Ответ №2:

Простым решением было бы просто отключить фокус, просто создайте свой собственный класс:

 public class ViewOnlyTextBox : System.Windows.Forms.TextBox {
    // constants for the message sending
    const int WM_SETFOCUS = 0x0007;
    const int WM_KILLFOCUS = 0x0008;

    protected override void WndProc(ref Message m) {
        if(m.Msg == WM_SETFOCUS) m.Msg = WM_KILLFOCUS;

        base.WndProc (ref m);
    }
}