如何阻止用户编辑富文本框中的文本?

How can I stop the user being able to edit text in a richtextbox?

提问人:forefie 提问时间:11/16/2023 更新时间:11/16/2023 访问量:47

问:

我有一小段代码,它动态地向 tablelayoutpanel 的每个单元格添加一个 richtextbox,但用户应该无法编辑其中的文本。

RichTextBox[,] textList = new RichTextBox[4, 4];
            for (int a = 0; a < 4; a++)
            {
                for (int b = 0; b < 4; b++)
                {
                    RichTextBox newBox = new RichTextBox { Dock = DockStyle.Fill, Text = "2", BackColor = Color.AntiqueWhite, BorderStyle = BorderStyle.None, SelectionAlignment = HorizontalAlignment.Center, Font = new Font("Arial", 36, FontStyle.Bold), SelectionProtected = true };
                    textList[a, b] = newBox;
                    tableLayoutPanel1.Controls.Add(newBox, a, b);
                }
            }

我尝试使用 SelectionProtected = true,但它不会阻止用户单击和编辑文本,并且 Enabled = true 使文本显示为灰色。

C# WinForms RichTextBox

评论

0赞 Mustafa Özçetin 11/16/2023
我想你的意思是最后一句话。Enabled = false
0赞 Mustafa Özçetin 11/16/2023
设置可防止控件响应用户交互。例如,您无法复制文本。使用该属性。Enabled = falseReadOnly

答:

4赞 Jackdaw 11/16/2023 #1

您可以将属性设置为:ReadOnlytrue

newBox.ReadOnly = true;
textList[a, b] = newBox;

请参阅 TextBoxBase.ReadOnly 属性

评论

0赞 forefie 11/17/2023
ReadOnly = true 非常适合阻止用户编辑文本,谢谢。有什么方法可以阻止他们选择它吗?我仍然可以单击文本框以显示闪烁的栏。
0赞 Jackdaw 11/17/2023
@forefie:您可以使用 和 set 的事件处理程序或查看以下帖子: 禁用 RichTextBox 或 TextBox 中的选择突出显示SelectionChanged()RichTextBoxSelectionLength = 0;