Q:

How to make textbox behave like a popup info box in C#

i intend to display some information when i right click on a textbox. this information is just plain readable information.
My approach was to use a richtextbox to be visible whenever the texbox is right clicked. however i am not able to hide the textbox when user clicks the container. using mousecapturechanged event  for Richtextbox only caputres the click on the Richtextbox and not any clicks made outside the Richtextbox. release focus also does not solve the purpose.
Edit: Gist:
So what am i trying to do is create a popup info box, whose sole purpose should be to display information and then hide when click is made anywhere other than the box itself

A:

This works for me : this assumes you do want the RTF control to pop up where the user clicked in the TextBox, rather than in a fixed location. And this example suppresses the default context menu by setting ShortCutsEnabled : it re-enables using keyboard shortcuts when the left mouse goes down : if they are turned off. This example also defines a double-click handler on the RTF control which will also hide the RTF control.
    private Point rtfLocation;

    private void textBox1_MouseDown(object sender, MouseEventArgs e)
    {
        if (MouseButtons == MouseButtons.Right)
        {
            rtfLocation = this.PointToClient(textBox1.PointToScreen(new Point(e.X, e.Y)));
            textBox1.ShortcutsEnabled = false;
            richTextBox1.Location = rtfLocation;
            richTextBox1.Show();
        }
    }

    private void richTextBox1_MouseDoubleClick(object sender, MouseEventArgs e)
    {
        richTextBox1.Hide();
    }

    private void richTextBox1_Leave(object sender, EventArgs e)
    {
        richTextBox1.Hide();
    }

    private void Form1_Click(object sender, EventArgs e)
    {
        if (richTextBox1.Visible)
        {
            richTextBox1.Hide();
        }
    }

    private void textBox1_Click(object sender, EventArgs e)
    {
        if (richTextBox1.Visible) richTextBox1.Hide();
    }

    private void richTextBox1_VisibleChanged(object sender, EventArgs e)
    {
        textBox1.ShortcutsEnabled = ! richTextBox1.Visible;
    }

