منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : مفتاح المسافة
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم جميعا 
هل يمكن الغاء مفتاح المسافة فى لوحة المفاتيح فهو يعمل عمل مفتاح انتر هل من طريقه بإلغائه بحيت لا يعمل اى حدث
المشروع. تطبيق وندوز. Vb net
(18-12-25, 10:01 PM)ZEEN4ZEEN كتب : [ -> ]السلام عليكم جميعا 
هل يمكن الغاء مفتاح المسافة فى لوحة المفاتيح فهو يعمل عمل مفتاح انتر هل من طريقه بإلغائه بحيت لا يعمل اى حدث
المشروع. تطبيق وندوز. Vb net

و عليكم السلام ورحمة الله و بركاته
سالت قوقل فاجاب:
إقتباس :نعم، يمكنك إلغاء وظيفة مفتاح المسافة (Spacebar) في تطبيق Windows باستخدام VB.NET عن طريق اعتراض ضغط المفتاح داخل تطبيقك (مثل حدث KeyDown) والتحقق مما إذا كان المفتاح المضغوط هو مفتاح المسافة، ثم منع السلوك الافتراضي له (إدخال مسافة) أو تنفيذ حدث خاص بك بدلاً منه (مثل تجاهله)، مما يمنعه من إطلاق حدث "Enter" (إذا كان مرتبطًا به). 
الطريقة في VB.NET (لمنع السلوك الافتراضي):
حدد العنصر (Control) الذي تريد تطبيق هذا عليه (مثل TextBox أو Form بأكمله).
أضف معالج حدث KeyDown: في نافذة الخصائص (Properties)، اختر العنصر، ثم اختر الحدث KeyDown من القائمة المنسدلة.
Private Sub YourControl_KeyDown(sender As Object, e As KeyEventArgs) Handles YourControl.KeyDown
    If e.KeyCode = Keys.Space Then
        ' منع السلوك الافتراضي لمفتاح المسافة (مثل إدخال مسافة أو تشغيل Enter)
        e.Handled = True
        e.SuppressKeyPress = True ' لمنع إصدار الصوت وأي سلوك إضافي
    End If
    ' يمكنك إضافة كود آخر هنا لمعالجة مفتاح Enter أو أي مفتاح آخر
    If e.KeyCode = Keys.Enter Then
        ' كود خاص بمعالجة مفتاح Enter إذا أردت
        ' e.Handled = True ' لمنع السلوك الافتراضي لـ Enter أيضًا
    End If
End Sub

e.Handled = True: يخبر النظام بأن الحدث قد تمت معالجته ولا يجب أن يمر إلى العناصر الأخرى.
e.SuppressKeyPress = True: يمنع أي سلوك إضافي مرتبط بضغط المفتاح، بما فيهم صوت النظام إذا ضغطت مفتاحًا خاطئًا.
لماذا يعمل كـ Enter؟
في بعض مربعات الحوار (Dialog Boxes) في Windows، إذا لم يكن هناك زر افتراضي (مثل زر "OK") أو كان التركيز على حقل نصي (TextBox) في مربع حوار، فإن الضغط على مفتاح المسافة قد يتم تفسيره كـ "Enter" وتشغيل الإجراء الافتراضي (مثل الضغط على زر افتراضي أو الانتقال للسطر التالي). بمنع السلوك الافتراضي لمفتاح المسافة باستخدام الكود أعلاه، فإنك تمنعه من إطلاق حدث الـ Enter. 
لإلغاء مفتاح المسافة تمامًا على مستوى النظام (غير موصى به للتطبيق):

يمكن استخدام أدوات خارجية لإعادة تعيين المفاتيح (Key Remapping Tools) مثل AutoHotkey، ولكن هذا يؤثر على النظام كله وليس فقط تطبيقك.