0

我在 c# 中有一个richtextbox,我想让链接显示为只读。现在我可以将光标移入其中并进行编辑。有没有办法让它只读?

4

4 回答 4

1

您可以设置 RichTextBox 的此属性以使整个文本为只读

只读 = 真

如果您只想保护链接但保留其他文本可编辑,请尝试在 Form1_Load 或您可能创建的任何方法下插入以下内容

您需要添加RichTextBox.Find(string str); 从对象浏览器

    MatchCollection mc = Regex.Matches(richTextBox1.Text, @"(www[^ \s]+|http[^ \s]+)([\s]|$)", RegexOptions.IgnoreCase); // Create a new MatchCollection and match from richTextBox1.Text

    for (int collection = 0; collection < mc.Count; collection++) // increase collection for every string in mc
    {
        if (richTextBox1.Find(mc[collection].Value, RichTextBoxFinds.None) > -1) // Find the mc value
        {
            richTextBox1.SelectionProtected = true; // Protect the value
        }
    }

所以表格看起来像这样

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }


        private void Form1_Load(object sender, EventArgs e)
        {
            MatchCollection mc = Regex.Matches(richTextBox1.Text, @"(www[^ \s]+|http[^ \s]+)([\s]|$)", RegexOptions.IgnoreCase);

            for (int collection = 0; collection < mc.Count; collection++)
            {
                if (richTextBox1.Find(mc[collection].Value, RichTextBoxFinds.None) > -1)
                {
                    richTextBox1.SelectionProtected = true;
                }
            }

        }
    }
}

谢谢,

祝你有美好的一天 :)

于 2012-10-01T20:43:29.857 回答
1

您可以像这样在代码中更改它:

richTextBox1.ReadOnly = true;

或者您可以转到您的设计视图,检查您的富文本框的属性并将ReadOnly属性设置为true.

于 2012-10-01T19:50:55.563 回答
0

我想分享我的解决方案......我确实尝试了我在互联网上找到的所有内容,但似乎我无法完全达到我想要的 100%(将richtexbox 设为只读)。然后我开始寻找一种替代方案,最终我得到了一个完全按照我想要的方式做的事情。

有时我们需要在其上显示带有样式的值,这就是我们第一次选择richtextbox的原因,然后当我们无法将其设置为ReadOnly时就成为一个问题。不同的是我不再使用richtextbox,而是将其更改为标签。根据您的程序的工作方式,您可能需要 2 个控件(富文本框和标签)来保存相同的值,这些值将根据您的要求进行切换(可见真/假)。

在此处查看我的示例以获得 ReadOnly Richtextbox 外观相似的控件:

<div id="History">
    <asp:Label ID="lblLACA27" runat="server" CssClass="ctlLabel"></asp:Label>
</div>

还有一段 CSS 代码:

    #History
    {
        height: 100px;
        float: left;
        overflow: auto;
        overflow-x: hidden;
    }

包含 LABEL 的 DIV 标记将像多行文本框/富文本框一样带有可见的滚动条。就是这样,让我们​​继续编程。希望这对以后的人有所帮助。

于 2013-07-22T02:46:29.627 回答
0

您应该捕获更改事件,以重置用户想要对链接进行的每个更改并将其设置回原始链接的方式。如果用户删除或添加字符,则保存链接的位置并更新位置。

于 2012-10-01T20:00:07.767 回答