在C# winform中怎么设置文本框中部分字体的颜色,即根据条件在编程中改变文本框中部分字体的颜色

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在C# winform中怎么设置文本框中部分字体的颜色,即根据条件在编程中改变文本框中部分字体的颜色相关的知识,希望对你有一定的参考价值。

修改文本框里的全部文字颜色,就是用ForeColor属性了

如果只修改部分文字颜色,那么普通的文本框做不到,要用RichTextBox了
参考技术A textbox。forecolor=Color.FromArgb(((int)(((byte)(192))))。 ((int)(((byte)(164))))。((int)(((byte)(251))))); 参考技术B 设置文本框控件的 ForeColor 属性 参考技术C 可以设置 ForeColor 属性追问

这样文本框里的字的颜色就全改了。我要的是改变其中几个字的颜色,其它字的颜色不变。

参考技术D 你可以尝试使用富文本框.

RichTextBox C# 设置插入符号位置 winforms

【中文标题】RichTextBox C# 设置插入符号位置 winforms【英文标题】:RichTextBox C# Set caret location winforms 【发布时间】:2011-06-22 14:20:16 【问题描述】:

我正在构建一个聊天应用程序,用户将其文本输入到富文本框中。

在富文本框中有一个初始文本,上面写着:“我:”。

现在,当用户按下主页按钮时,我希望插入符号位于“Me:”字符串之后。因此对于 Shift+Home 组合或三次鼠标单击或 Ctrl + 左光标等。

有什么办法吗?

我已经试过了

[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool SetCaretPos(int X, int Y);

提前致谢, 盎司。

【问题讨论】:

【参考方案1】:

您可以使用富文本框的SelectionStartSelectionLength 属性设置插入符号的位置。将SelectionLength 设置为0,然后将SelectionStart 设置为您希望插入符号出现的位置。

SelectionStart 的文档说:

如果控件中没有选择文本,则此属性指示新文本的插入点或插入符号。


Win32 API 函数SetCaretPos 的级别太低,无法满足您的需求。

【讨论】:

【参考方案2】:

Winforms:RichTextBox.SelectionStart & 将 RichTextBox.SelectionLength 设置为 0。

WPF:RichTextBox.CaretPosition

【讨论】:

感谢宽限期,现在看来我复制了您的答案! ;-) 确实哈哈,我编辑完看到你已经发了。【参考方案3】:

使用Select 方法:

public void Select(
    int start,
    int length
)

richTextBoxUserText.Select(richTextBoxUserText.TextLength, 0);

【讨论】:

【参考方案4】:
RichTextBox1.SelectionStart = Pos;
RichTextBox1.SelectionLength = 0;
RichTextBox1.ScrollToCaret();

【讨论】:

【参考方案5】:

发现它在属性 SelectionProtected 上搜索

richTextBoxUserText.Text = INITIAL_TEXT;
richTextBoxUserText.SelectAll();
richTextBoxUserText.SelectionColor = Color.Red;
richTextBoxUserText.SelectionProtected = true;
richTextBoxUserText.SelectionLength = 0;
richTextBoxUserText.SelectionStart = richTextBoxUserText.TextLength + 1;

【讨论】:

@David,保护文本不被删除的解决方案是使用 SelectionProtected 属性。为了防止用户选择它,需要额外的工作......你在哪里告诉我这个? @os 您在原始问题的任何地方都没有提到保护文本。另外,我很确定 'richTextBoxUserText.SelectionStart = richTextBoxUserText.TextLength + 1' 会抛出一个超出范围的异常。 @David 是的,我没有提到,因为我不知道......而且它不会抛出 @oz 很抱歉我没有提到保护,但我没有看到你问题的那一部分。 "如果您将此属性设置为超出控件中文本长度的位置,则选择开始位置将放在最后一个字符之后。" - 这解释了它......你的草率编码得到了补偿! :)

以上是关于在C# winform中怎么设置文本框中部分字体的颜色,即根据条件在编程中改变文本框中部分字体的颜色的主要内容,如果未能解决你的问题,请参考以下文章

C# winform 程序中如何限制一个文本框中只输入数字和字母呢?

如何在 C# Winforms 程序的文本框中突出显示文本?

C#做winform时,登录系统后怎么写判断一个子窗体的文本框中输入的密码是不是与当前登录的密码一致?

RichTextBox C# 设置插入符号位置 winforms

c# winform的dateTimePicker控件的日历面板的字体怎么调大?

C# winform 文本框里,怎么设置数字的格式?