2012-10-01 47 views
0

我有一個richtextbox在c#中,我想使鏈接顯示爲只讀。現在我可以將光標移動到它並進行編輯。有沒有辦法讓它只讀?使鏈接只讀在richtextbox c#

+0

PiLHA

+2

很不清楚您正在討論哪個RichTextBox類。也許它的SelectionProtected屬性。 –

回答

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; 
       } 
      } 

     } 
    } 
} 

感謝,

有一個偉大的一天:)

+0

非常感謝!這正是我所期待的。 – CodeRunner

+0

@CodeRunner很高興我能幫到你。祝你有美好的一天:) –

1

您可以像這樣在你的代碼更改:

richTextBox1.ReadOnly = true; 

或者你可以去你的設計視圖,檢查您的RichTextBox的屬性和ReadOnly屬性設置爲true

0

您應該捕獲更改事件,以便您重置用戶想要對鏈接進行的每個更改並將其設置回原始鏈接。保存鏈接的位置並在用戶刪除或添加字符時更新位置。

0

我想與大家分享我的解決方案。 ..我確實嘗試了我在互聯網上找到的所有東西,但似乎我無法像我想要的那樣準確地獲得100%(使其成爲只讀的Richtexbox)。然後我開始尋找替代品,最終我得到一個完全像我想要的。

有時我們需要在其上顯示樣式的值,這就是爲什麼我們第一次選擇richtextbox,然後當我們無法將其作爲ReadOnly時,它成爲一個問題。不同的是我不再使用richtextbox,但我將其更改爲標籤。根據程序的工作方式,您可能需要有2個控件(richtextbox &標籤)才能保持相同的值,並根據您的要求切換(可見true/false)。

見我的例子在這裏得到一個只讀的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; 
    } 

持有的標籤DIV標籤會像多行文本框/ richtextbox上可見滾動條。這就是它&讓我們繼續編程。希望這會在稍後幫助別人。