Запретить вкладку при установке курсива в RichTextBox - PullRequest
0 голосов
/ 22 февраля 2019

Я создаю приложение Notes для себя, используя RichTextBox, и у меня возникли некоторые проблемы со шрифтом "Styling".Я связал Ctrl + I , чтобы установить выделенный текст курсивом, который работает.Но по какой-то причине, когда я это делаю, он добавляет вкладку, удаляя весь выделенный текст.Единственный случай, который я мог найти у кого-то, у кого была эта проблема, был решен добавлением e.SuppressKeyPress = true;но это тоже не работает для меня.

private void txbMain_KeyUp(object sender, KeyEventArgs e)
{
    if((e.KeyCode==Keys.B && e.Modifiers == Keys.Control) || (e.KeyCode==Keys.F && e.Modifiers==(Keys.Control | Keys.Shift)))
    {
        FontHelper.Bold(this);
    }
    else if(e.KeyCode==Keys.I && e.Modifiers == Keys.Control)
    {
        if (txbMain.SelectionFont != null)
        {
            e.SuppressKeyPress = true;
            System.Drawing.Font currentFont = txbMain.SelectionFont;
            System.Drawing.FontStyle newFontStyle;
            if (txbMain.SelectionFont.Italic == true)
            {
                newFontStyle = FontStyle.Regular;
            }
            else
            {
                newFontStyle = FontStyle.Italic;
            }
            txbMain.SelectionFont = new Font(
               currentFont.FontFamily,
               currentFont.Size,
               newFontStyle
            );
        }
    } 
} 

1 Ответ

0 голосов
/ 22 февраля 2019

Комбинация CTRL + I является функциональностью по умолчанию для richtextbox для входа на вкладку.Ваш текст будет заменен, даже если у вас нет кода или событий в richtextbox.Таким образом, проблема в том, что ваше событие запускается после этой функциональности по умолчанию, и текст уже удаляется, когда код достигает вашего форматирования текста.

Самым простым решением было бы использовать событие KeyDown вместоKeyUp.

...