
Introduction
This is a short demo on how to make a textbox act as a hyperlink when the CTRL key is pressed and the control has the focus.
Background
I needed aLinkedTextBox
control for a customer.
Using the code
The control has three additional properties:
CltrHyperLink
HyperLinkColor
HyperLinkVisitedColor
A new Event:
And a new Virtual method:
Setting theCtrlHyperLink
property totrue
activates all the other properties and events.
HyperLinkColor
is the color of the hyperlink when it is in the default state.HyperLinkVisitedColor
is the color of the hyperlink in its visited state. Listening to theHyperLinkClicked
event will result in the event being fired when the user holds down the Control key and clicks the left mouse button.OnHyperLinkClicked
can be overridden if needed.
Overridding some of the features of the TextBox
protectedoverridevoid OnKeyUp(KeyEventArgs e){base.OnKeyUp(e); FormatTextBox(false);//Set the decoration of the textbox to standard}protectedoverridevoid OnKeyDown(KeyEventArgs e){base.OnKeyDown(e); FormatTextBox(e.Control);//if true Set the decoration of the textbox//to an hyperlink else standard.}protectedoverridevoid OnMouseClick(MouseEventArgs e){base.OnMouseClick(e);if (_IsHyperLink && e.Button == MouseButtons.Left)//If the the control is in hyperlink mode//and the left mouse button was clicked... { OnHyperLinkClicked(new EventArgs()); FormatTextBox(false); }}privatevoid FormatTextBox(bool ShowAsLink){if (!_CltrHyperLink)return;if (ShowAsLink) { Font =new Font(Font, FontStyle.Underline); ForeColor = (!_HyperLinkVisited ? _HyperLinkColor : _HyperLinkVisitedColor); Cursor = Cursors.Hand; _IsHyperLink =true; }else { Font =new Font(Font, FontStyle.Regular); ForeColor = SystemColors.WindowText; Cursor = Cursors.Default; _IsHyberLink =false; }}protectedvirtualvoid OnHyperLinkClicked(EventArgs e){ _HyperLinkVisited =true;if (HyperLinkClicked !=null) HyperLinkClicked(this, e);}
History
- 7 Sep. 2009 - First release.