我在c#中有一个richtextbox,我希望将链接显示为readonly。现在我可以将光标移动到它并编辑它。有没有办法让它只读?
答案 0 :(得分:1)
您可以在代码中更改它:
richTextBox1.ReadOnly = true;
或者您可以转到设计视图,检查richtextbox的属性并将ReadOnly
属性设置为true
。
答案 1 :(得分:1)
您可以设置RichTextBox的此属性以使整个文本为只读
ReadOnly = true
如果您只想保护链接但保留其他文字可编辑,请尝试插入以下内容,无论是在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;
}
}
}
}
}
谢谢,
度过美好的一天:)
答案 2 :(得分:0)
您应该捕获更改事件,以便重置用户想要对链接进行的每个更改并将其设置回原始链接。如果用户删除或添加字符,请保存链接的位置并更新位置。
答案 3 :(得分:0)
我想分享我的解决方案......我确实尝试了我在互联网上找到的所有内容,但似乎我无法完全按照我想要的100%(将richtexbox设为readonly)。然后我开始寻找替代方案,最后我得到一个完全按照我想要的方式。
有时我们需要在其上显示带有样式的值,这就是为什么我们在第一次选择richtextbox,然后当我们无法将其设置为ReadOnly时它就成了问题。不同的是我不再使用richtextbox,但我将其更改为标签。根据您的程序的工作方式,您可能需要使用2个控件(richtextbox和amp; label)来保存相同的值,这些值将根据您的要求进行切换(可见真/假)。
请参阅我的示例,以获得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标记将像多行文本框/ richtextbox一样,其上显示滚动条。多数民众赞成让我们继续编程。希望这会有所帮助。