문제

나는 RichTextBox (.NET WinForms 3.5)를 사용하고 있으며 표준 단축키 키 중 일부를 무시하고 싶습니다 ... 예를 들어, CTRL+I가 RichText 메소드를 통해 텍스트를 이탤릭체로 만들기를 원하지 않습니다. 대신 텍스트를 처리하는 내 자신의 방법을 실행하십시오.

어떤 아이디어?

도움이 되었습니까?

해결책

Ctrl + I는 바로 가기장 속성의 영향을받는 기본 단축키 중 하나가 아닙니다.

다음 코드는 키 다운 이벤트에서 Ctrl + I를 가로 채므로 IF 블록 내부에서 원하는 모든 것을 수행 할 수 있습니다. 표시된 것처럼 키 프레스를 억제하십시오.

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