Как изменить цвет текста в форме windows при нажатии кнопки? - PullRequest
1 голос
/ 26 мая 2020

Когда я нажимаю кнопку со словом, например "кошка", я хочу, чтобы это слово в richTextBox1 изменилось на красный цвет. Конечно, я ошибся, но я хотел бы узнать, как это исправить.

  private void btn1(object sender, EventArgs e)
    {
        Button button = sender as Button;
        string wordToColor = button.Text;
        ChangeColorOfText(richTextBox1, wordToColor);
    }

    private void ChangeColorOfText(RichTextBox richTextBox1, string word)
    {
        ColorDialog colorDialog1 = new ColorDialog();
        colorDialog1.Red = richTextBox1.SelectionColor;
        int index;
        do
        {
            index = richTextBox1.Find(word);
            if (index >= 0)
            {
                richTextBox1.Select(index, word.Length);
                richTextBox1.SelectionColor = ColorDialog.Red;
            }
        }
        while (index >= 0);
    }

Ответы [ 2 ]

0 голосов
/ 26 мая 2020

Я удалил ColorDialog colorDialog1 = new ColorDialog(); colorDialog1.Red = richTextBox1.SelectionColor; и изменил richTextBox1.SelectionColor = ColorDialog.Red; to richTextBox1.SelectionColor = Color.Red; Я думал, что это сработает, но когда я напишу то же слово в текстовом поле, что и на кнопке, и нажму на кнопку, форма застывает.

0 голосов
/ 26 мая 2020

У меня было несколько вещей, которые могли бы стать для вас решением:

  1. Для меня это было проблемой, но не обязательно:
        private void button1_Click(object sender, EventArgs e)
        { 
            //Your code for finding and selecting your text
            if (!String.IsNullOrEmpty(myRichTextBox.Text))
            {
                //Your code for selecting your text
                myRichTextBox.SelectionStart = 0;
                myRichTextBox.SelectionLength = myRichTextBox.Text.Length;
            }

            myRichTextBox.SelectionFont = new Font("Verdana", 12, FontStyle.Bold);
            myRichTextBox.SelectionColor = Color.Red;
        }

Думаю ваша проблема заключалась не в установке шрифта до того, как вы установили цвет

(когда я добавил строку myRichTextBox.SelectionFont = new Font("Verdana", 12, FontStyle.Bold);, все работало)

Второе, что я сделал в коде, - это использовать

myRichTextBox.SelectionColor = Color.Red;

вместо

richTextBox1.SelectionColor = ColorDialog.Red;

это проще и эффективнее.

В строке

private void ChangeColorOfText(RichTextBox richTextBox1, string word)

вам не нужно добавлять элемент RichTextBox richTextBox1. (у меня нормально работала без него).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...