Bharathi
Bharathi

Reputation: 1328

How to show text box on mouse move c#

I want to show a inherited text box control on mouse over on the form. But text is not displayed. Below is my code.

        private ChartCalloutBox m_calloutbox = null;
        public Form2()
        {
            InitializeComponent();
            this.MouseMove += Form2_MouseMove;

        }

        void Form2_MouseMove(object sender, MouseEventArgs e)
        {
            if (m_calloutbox == null)
            {
                m_calloutbox = new ChartCalloutBox();
            }
            m_calloutbox.Location = e.Location;
            m_calloutbox.Show();
        }

        internal class ChartCalloutBox : TextBox
        {

            public ChartCalloutBox()
            {               
                InitializeComponent();
            }

            private void InitializeComponent()
            {
                this.SuspendLayout();
                this.Location = new System.Drawing.Point(350, 170);
                this.ClientSize = new System.Drawing.Size(130, 40);
                this.Size = new System.Drawing.Size(130, 40);
                this.BackColor = System.Drawing.Color.Black;
                this.ForeColor = System.Drawing.Color.Brown;
                this.Name = "CalloutBox";
                this.Text = "Callout Rect";
                this.ResumeLayout(false);
                // 
            }
        }

Any one help on this how to show the text box on mouse over. and the text box place should be change based on the mouse position.

Thanks, Bharathi.

Upvotes: 0

Views: 673

Answers (1)

Kira
Kira

Reputation: 1443

Add your control to controls collection.

Code should be like

        void Form2_MouseMove(object sender, MouseEventArgs e)
        {
            if (m_calloutbox == null)
            {
                m_calloutbox = new ChartCalloutBox();
                this.Controls.Add(m_calloutbox);
            }
            m_calloutbox.Location = e.Location;
        }

Upvotes: 2

Related Questions