سؤال

وأنا باستخدام RichTextBox (.NET WinForms عناصر 3.5)، وأود أن تجاوز بعض مفاتيح الاختصار القياسية .... على سبيل المثال، لا أريد السيطرة + I لجعل مائل نصية عبر طريقة RichText، ولكن بدلا من ذلك تشغيل طريقة بلدي لمعالجة النصوص.

وأي أفكار؟

هل كانت مفيدة؟

المحلول

والسيطرة + I ليست واحدة من الاختصارات الافتراضية التي تأثرت الملكية ShortcutsEnabled.

والتعليمة البرمجية التالية تعترض على Ctrl + I في الحدث KeyDown حتى تتمكن من فعل أي شيء تريده داخل كتلة إذا، فقط للتأكد من قمع الصحافة الرئيسيين مثل لقد أظهرت.

private void YourRichTextBox_KeyDown(object sender, KeyEventArgs e)
{
    if ((Control.ModifierKeys & Keys.Control) == Keys.Control && e.KeyCode == Keys.I)
    {
        // do whatever you want to do here...
        e.SuppressKeyPress = true;
    }
}

نصائح أخرى

وتعيين الخاصية RichtTextBox.ShortcutsEnabled إلى true ثم التعامل مع اختصارات نفسك، وذلك باستخدام الحدث KeyUp. منها مثلا.

using System;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.textBox1.ShortcutsEnabled = false;
            this.textBox1.KeyUp += new KeyEventHandler(textBox1_KeyUp);
        }

        void textBox1_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.Control == true && e.KeyCode == Keys.X)
                MessageBox.Show("Overriding ctrl+x");
        }
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top