كيف يمكنني تحديد زر الماوس الذي رفع الحدث انقر في WPF؟

StackOverflow https://stackoverflow.com/questions/977329

  •  13-09-2019
  •  | 
  •  

سؤال

لدي زر أن أشد OnClick كلما كان هناك انقر فوق هذا الزر. أود أن أعرف أي زر الماوس النقر فوق هذا الزر؟

عندما أستخدم Mouse.LeftButton أو Mouse.RightButton, ، كلاهما قل لي "refsed."وهي دولهم بعد نقرة.

أريد فقط أن أعرف أي واحد النقر فوق الزر الخاص بي. إذا قمت بتغيير EventArgs ل MouseEventArgs, ، أتلقى أخطاء.

XAML: <Button Name="myButton" Click="OnClick">

private void OnClick(object sender, EventArgs e)
{
//do certain thing. 
}
هل كانت مفيدة؟

المحلول

إذا كنت تستخدم فقط حدث النقر فوق الزر، فإن زر الماوس الوحيد الذي سيطلقه هو زر الماوس الأساسي.

إذا كنت لا تزال بحاجة إلى معرفة التحديد ما إذا كان الزر الأيسر أو الأيمن، فيمكنك استخدام الملفات SYSTEMPORT للحصول عليه.

void OnClick(object sender, RoutedEventArgs e)
    {
        if (SystemParameters.SwapButtons) // Or use SystemInformation.MouseButtonsSwapped
        {
            // It's the right button.
        }
        else
        {
            // It's the standard left button.
        }
    }

تعديل: ما يعادل WPF SystemInformation هو SystemParameters، والتي يمكن استخدامها بدلا من ذلك. على الرغم من أنه يمكنك تضمين system.windows.forms كمرجع للحصول على معلومات النظام دون إذكار التطبيق سلبا بأي طريقة.

نصائح أخرى

يمكنك إلقاء مثل أدناه:

MouseEventArgs myArgs = (MouseEventArgs) e;

ثم الحصول على المعلومات مع:

if (myArgs.Button == System.Windows.Forms.MouseButtons.Left)
{
    // do sth
}

يعمل الحل في VS2013 ولن تضطر إلى استخدام حدث MouseClick بعد الآن؛)

أنت على حق، خوسيه، إنه مع حدث MouseClick. ولكن يجب عليك إضافة مندوب صغير:

this.button1.mousedown + = new system.windows.forms.mouseeventhandler (this.mustedouwn)؛

واستخدام هذه الطريقة في النموذج الخاص بك:

    private void MyMouseDouwn(object sender, MouseEventArgs e) 
    {
        if (e.Button == MouseButtons.Right)
           this.Text = "Right";

        if (e.Button == MouseButtons.Left)
            this.Text = "Left";
    }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top