我正在开发一个C#应用程序来与MUD / MOO服务器通信。基本上它需要文本并在屏幕上显示它。目前我正在使用RichTextBox来显示文本,我的彩色文本工作正常,我只需要实现URL,但是在这样做时我发现要添加带有自定义文本的URL(例如,不是http://,就像:点击这里)我需要使用Win32 API,我根本不能这样做......这需要在linux上运行单声道(可能还有mac)。反正有没有让这项工作?或者我应该采取什么替代途径? (我正在考虑转换为HTML,但是有一个很好的跨平台HTML控件吗?)(所有这些都是免费的)。
先谢谢。
我设法最终使用:
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 "";
}
只需将所有链接附加到Links堆栈,并在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”事件更改光标并对鼠标点击做出反应。
希望这有帮助,尊重