onclick事件使用c#winforms将字符串传递给richtextbox中的文本块方法

时间:2014-01-02 20:40:49

标签: c# winforms richtextbox

我将字符串failing_client附加到使用C#的WinForms应用程序中名为report_output_box的RichTextBox控件。

是否可以在RichTextBox控件中单击该字符串,然后将字符串传递给onclick方法?

我有什么选择?

更新:我需要更加具体。我不想在OnClick操作上打开URL,而是调用函数。

示例代码:

//... code before this
//failing_client_list is list of servers
foreach (string failing_client in failing_client_list)
{

      //link onclick will call  a method w/ a string argument

       report_output_box.LinkClicked += new  
                             LinkClickedEventHandler(open_inet_window(failing_client));
       report_output_box.AppendText(failing_client + "\n");


}

    //code after...


//method it would call
private void open_inet_window(object sender, EventArgs e, string failing_client)
{
      //create a window object (w/ window consturctor) and then open it
      inet_clients_window inizzy_window = new inet_clients_window(failing_client);
      inizzy_window.Show();
}

谢谢!

1 个答案:

答案 0 :(得分:0)

请查看:http://www.codeproject.com/Articles/9196/Links-with-arbitrary-text-in-a-RichTextBox

本文介绍了一种在RichTextBox中创建自定义链接的方法,该链接不以http://或ftp://开头。

但是,通常,如果要添加以http://开头的链接,那么您需要做的就是确保RichTextBox的属性DetectUrls设置为true,然后您必须为此添加处理程序LinkClicked事件。

在StackOverFlow上进行一些搜索,你会发现一个非常好的来源:How can I make a hyperlink work in a RichTextBox?

这是我做的一个简单示例,请注意,通过e.LinkText您可以创建一个Switch()语句,然后根据链接URL值决定做什么?

namespace WindowsFormsApplication11
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            richTextBox1.LinkClicked += new LinkClickedEventHandler(richTextBox1_LinkClicked);
        }

        void richTextBox1_LinkClicked(object sender, LinkClickedEventArgs e)
        {
            MessageBox.Show("You clicked the link: " + e.LinkText);
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            richTextBox1.AppendText("This is link1: http://www.google.com");
            richTextBox1.AppendText("\nThis is link2: http://www.stackoverflow.com");
        }      
    }
}