2011-09-18 14 views
1

MUD/MOOサーバーと通信するためのC#アプリケーションを開発しています。基本的には、テキストを取り込んで画面に表示します。現時点では、テキストを表示するのにRichTextBoxを使用していますが、色付きのテキストが正常に動作しているだけですが、URLを実装する必要がありますが、これを実行している間にカスタムテキスト(例:http://ではなく、 :ここをクリックしてください)私はWin32 APIを使用する必要がありますが、私はこれを行うことはできません。これは、Linux上でモノで動作する必要があります。とにかくこの作品を作ることはありますか?どのような代替手段を追求すべきですか? (私はHTMLに切り替えることを検討していましたが、良いクロスプラットフォームのHTMLコントロールがありますか?)(このすべては無料です)。C#クロスプラットフォームRichTextBox URLまたは代替ソリューション

ありがとうございました。

は、私が使用して、最後にそれを行うために管理:

Stack<Link> Links = new Stack<Link>(); 
internal class Link 
{ 
     public int starts = 0; 
     public int ends = 0; 
     public string url = ""; 
} 
private string GetLink(RichTextBox rtb, Point point) 
     { 
      int index = rtb.GetCharIndexFromPosition(point); 
      foreach (Link link in Links.ToArray()) 
       if (link.starts <= index && link.ends >= index) 
        return link.url; 
      return ""; 
     } 

ちょうどスタックリンクへのすべてのリンクを追加し、MouseDownイベント内GETLINKを使用:)

+0

もっと明確に説明できますか? –

答えて

1

をごGtkTextViewを使用することができます代替として、それはクロスプラットフォームでなければなりません。次のコードを使用してハイパーリンクスタイルのテキストを追加できます。

TextTag tag = new TextTag("link"); 
tag.Foreground = "blue"; 
tag.Underline = Pango.Underline.Single;   
textview1.Buffer.TagTable.Add(tag); 

Gtk.TextIter iter = textview1.Buffer.GetIterAtOffset(0);   
textview1.Buffer.InsertWithTagsByName(ref iter, "link text", "link"); 

ここで、textview1はGtk.TextViewです。

「motion-notify-event」イベントと「event-after」イベントを使用してカーソルを変更し、マウスクリックで反応する必要があります。

これは役に立ちます、と考えています

関連する問題