Выделите текст в TextBox / Label / RichTextBox с помощью C # - PullRequest
3 голосов
/ 26 октября 2010

Спокойной ночи,

Я хотел бы знать, как я могу выделить часть текста, содержащегося в TextBox, Label (предпочтительно) или RichTextBox.Например, учитывая строку

«Это тест»,

Я бы хотел, чтобы элемент управления показывал «Это тест .».Есть ли какой-нибудь простой способ, которым я могу это сделать?

Большое спасибо.

Ответы [ 2 ]

5 голосов
/ 26 октября 2010
RichTextBox r = new RichTextBox();
r.Text = "This is a test";
r.Select(r.Text.IndexOf("test"), "test".Length);
r.SelectionFont = new Font(r.Font, FontStyle.Italic);
r.SelectionStart = r.Text.Length;
r.SelectionLength = 0;

Что-то на этот счет сработает и уберет выделение.

EDIT Это должно быть относительно легко заключено в вашем собственном методе. Вы даже можете сделать расширение:

public static class Extensions
{
    public static void StyleText(this RichTextBox me, string text, FontStyle style)
    {
        int curPos = me.SelectionStart;
        int selectLen = me.SelectionLength;
        int len = text.Length;
        int i = me.Text.IndexOf(text);

        while (i >= 0)
        {
            me.Select(i, len);
            me.SelectionFont = new Font(me.SelectionFont, style);
            i = me.Text.IndexOf(text, i + len);
        }

        me.SelectionStart = curPos;
        me.SelectionLength = selectLen;
    }
}

, а затем используйте его как:

richTextBox1.Text = "This is a test";
richTextBox1.StyleText("test", FontStyle.Italic);
0 голосов
/ 26 октября 2010

При использовании RichTextBox это было бы приблизительно:

textbox.Text = "This is a test.";
textbox.Select(10, 4);
textbox.SelectionFont = new Font(textBox.SelectionFont, FontStyle.Italic);

Это невозможно на одной этикетке, хотя вы могли бы использовать две.Теперь я могу думать об этом.

Редактировать: Исправлено.

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