Click here to Skip to main content
11,578,241 members (61,386 online)
Click here to Skip to main content

A C# IP Address Control

, 28 Apr 2008 MIT 386.5K 23.1K 289
Rate this:
Please Sign up or sign in to vote.
A C# analogue to the MFC CIPAddressCtrl

Screenshot - TestIPAddressControl.png

Introduction

Why didn't Microsoft include an IP address control in the stock toolbox for Visual Studio .NET? I needed something similar to the MFC CIPAddressCtrl class in a C# application recently, and was forced to roll my own. I tried to mimic the behavior of CIPAddressCtrl using C# here, and hopefully I've succeeded.

Background

IPAddressControl is really a composite UserControl that aggregates four specialized TextBox controls of type FieldCtrl and three specialized Controls of type DotCtrl. Here's a picture:

Screenshot - close_up.gif

The FieldCtrls do some validation and keyboard filtering, in addition to standard TextBox behavior. The DotCtrls do nothing but draw a dot.

Using the Code

Once the library containing IPAddressControl (IPAddressControlLib.dll) is built, add the control to the Toolbox in Visual Studio. From the Toolbox, just drag the control onto a form and you're ready to go. The interface to IPAddressControl is very simple.

Public Instance Properties

  • AutoHeight: gets or sets a value indicating whether the control is automatically sized vertically according to the current font and border. The default value is true.
  • Blank: gets a value indicating whether all of the fields in the control are empty.
  • BorderStyle: gets or sets the border style of the control. The default value is BorderStyle.Fixed3D.
  • ReadOnly: gets or sets a value indicating if the control is read-only.

Public Instance Methods

  • Clear: Clears the contents of the control.
  • GetAddressBytes: Returns an array of bytes representing the contents of the fields, index 0 being the leftmost field.
  • SetAddressBytes: sets the values of the fields using an array of bytes, index 0 being the leftmost field.
  • SetFieldFocus: sets the keyboard focus to the specified field in the control.
  • SetFieldRange: sets the lower and higher range of a specified field in the control.

The above properties and methods are in addition to the stock properties and methods of UserControl. Stock properties such as Text, Enabled, and Font -- as well as stock methods such as ToString() -- work as expected. The client code can register a handler for the public event, FieldChangedEvent, to be notified when any text in the fields of the control changes.

Note that Text and ToString() may not return the same value. If there are any empty fields in the control, Text will return a value that will reflect the empty fields. ToString() will fill in any empty fields with that field's RangeLower value. Also, if you are using the control to create an IPAddress, you can easily do so using this control's GetAddressBytes() method:

IPAddress ipAddress = new IPAddress( ipAddressControl.GetAddressBytes() );

History

  • 27 Apr 2008
    • Added propagation of KeyDown, KeyUp, and PreviewKeyDown events. Keys.Enter and Keys.Return will now propagate a KeyPress event.
  • 23 Oct 2007
    • ReadOnly should now really be read-only. Thanks to t_suzuki for reporting this bug.
  • 27 Sep 2007
    • Added proper event propagation for focus, keypress, and some mouse events.
    • Added AllowInternalTab and AnyBlank properties.
    • Removed superfluous code.
    • Removed a potential resource leak when calculating text size and added a null check for SetAddressBytes().
    • Compliant with FxCop 1.35.
  • 13 Jun 2007
    • Text set in design mode is persisted.
    • Removed override of AutoSize. Use AutoHeight instead.
    • [VS05] Modified size calculations to conserve horizontal space.
  • 6 Mar 2007
    • Now checks for null when parsing incoming text.
  • 21 Feb 2007
    • Added handling of [Backspace] across fields. Thanks to Antony for reporting this bug.
    • Added better handling of [Delete], and new handlers for [Home] and [End].
    • [VS05] Modified the MinimumSize property of DotControl to tighten up the spacing.
  • 5 May 2006
    • [VS05] Added Baseline to the SnapLines collection for the ControlDesigner class. Made the Text property browsable in design mode. Fixed the control sizing bug when large fonts are used.
  • 13 Oct 2005
    • Compliant with FxCop 1.32.
  • 17 Sep 2005
    • Enhanced to support Windows XP visual styles. Thanks to Carlos for requesting this.
  • 3 Aug 2005
    • Bug fix for Focused property. Thanks to Mario for reporting this.
  • 22 Mar 2005
    • Added a call to OnTextChanged() for the control when the text of any field changes. Thanks to Bertrand for pointing that out.
  • 6 Feb 2005
    • Added missing key handlers. Thanks to Norm and Ed for the heads-up on missing key handlers.
    • Added sizing.
    • Added ReadOnly property.
    • Non-standard color choices now render properly.
    • Added an event to notify clients of text change.
  • 20 Jan 2005 - Initial release.

License

This article, along with any associated source code and files, is licensed under The MIT License

Share

About the Author

mid=5741
Canada Canada
No Biography provided

You may also be interested in...

Comments and Discussions

 
SuggestionAdding copy/paste Pin
DGuenther9-Oct-14 7:29
memberDGuenther9-Oct-14 7:29 
GeneralMy vote of 4 Pin
DGuenther9-Oct-14 6:53
memberDGuenther9-Oct-14 6:53 
QuestionToolbox Component Not Available Pin
Member 1039484112-Nov-13 8:39
memberMember 1039484112-Nov-13 8:39 
GeneralMy vote of 4 Pin
maryamtooty18-May-13 7:50
membermaryamtooty18-May-13 7:50 
QuestionNot working in VS2010 (.net framework 4.0) Pin
enzo.faffa24-Feb-12 6:18
memberenzo.faffa24-Feb-12 6:18 
AnswerRe: Not working in VS2010 (.net framework 4.0) Pin
Member 993792918-Apr-13 9:16
memberMember 993792918-Apr-13 9:16 
QuestionAdding [VS03] to the download link text Pin
Ali Fakoor19-Oct-11 21:31
memberAli Fakoor19-Oct-11 21:31 
Generalthe values are working wrong in increasing Pin
Rapunzo13-Aug-10 23:40
memberRapunzo13-Aug-10 23:40 
QuestionMAC address for an encore??? Pin
sysop@HAL9K.com17-Mar-10 3:37
membersysop@HAL9K.com17-Mar-10 3:37 
Generaldisplay ordinary textbox shortcut menu Pin
pillesoft19-Nov-09 2:32
memberpillesoft19-Nov-09 2:32 
General[HOWTO] Adding this control or another to VS Toolbox Pin
Vincent DUVERNET (Nolmë Informatique)2-Aug-09 22:32
memberVincent DUVERNET (Nolmë Informatique)2-Aug-09 22:32 
GeneralMDI Child Bug Pin
mikerileyii21-May-09 5:50
membermikerileyii21-May-09 5:50 
GeneralWrong layout in Korean XP Pin
disore29-Apr-09 0:08
memberdisore29-Apr-09 0:08 
GeneralGreat! Pin
jose_camacho25-Mar-09 21:28
memberjose_camacho25-Mar-09 21:28 
GeneralProblem with ShortCuts Pin
StefanFrank11-Feb-09 6:14
memberStefanFrank11-Feb-09 6:14 
GeneralRe: Problem with ShortCuts Pin
mid=574111-Feb-09 8:44
membermid=574111-Feb-09 8:44 
GeneralRe: Problem with ShortCuts Pin
StefanFrank23-Mar-09 4:17
memberStefanFrank23-Mar-09 4:17 
GeneralThanks Pin
Dr.Luiji28-Jan-09 21:53
memberDr.Luiji28-Jan-09 21:53 
Generalgood article Pin
Donsw17-Jan-09 17:30
memberDonsw17-Jan-09 17:30 
GeneralSmall request with the auto correction of too big value Pin
smudge17-Nov-08 3:17
membersmudge17-Nov-08 3:17 
GeneralThank you ! Pin
gaby_la_star12-Oct-08 1:40
membergaby_la_star12-Oct-08 1:40 
GeneralProblem under Vista with larger font sizes Pin
StefanFrank26-Jun-08 0:08
memberStefanFrank26-Jun-08 0:08 
GeneralRe: Problem under Vista with larger font sizes Pin
Michael Chapman26-Jun-08 3:25
memberMichael Chapman26-Jun-08 3:25 
GeneralRe: Problem under Vista with larger font sizes Pin
StefanFrank26-Jun-08 3:33
memberStefanFrank26-Jun-08 3:33 
GeneralRe: Problem under Vista with larger font sizes Pin
Michael Chapman26-Jun-08 5:08
memberMichael Chapman26-Jun-08 5:08 
GeneralRe: Problem under Vista with larger font sizes Pin
StefanFrank26-Jun-08 5:23
memberStefanFrank26-Jun-08 5:23 
General[Message Deleted] Pin
Michael Chapman26-Jun-08 9:37
memberMichael Chapman26-Jun-08 9:37 
GeneralRe: Problem under Vista with larger font sizes Pin
StefanFrank26-Jun-08 21:30
memberStefanFrank26-Jun-08 21:30 
AnswerRe: Problem under Vista with larger font sizes Pin
vincio7723-Mar-09 3:57
membervincio7723-Mar-09 3:57 
GeneralRe: Problem under Vista with larger font sizes Pin
vincio7723-Mar-09 21:51
membervincio7723-Mar-09 21:51 
I've just downloaded the Rev44 and all works fine!!!

Thank you very much 4 all.
GeneralIPAddressControl -->public void Clear() need a Invoke Pin
wangkuang522-May-08 16:12
memberwangkuang522-May-08 16:12 
GeneralRe: IPAddressControl.Clear() needs an InvokeRequired Pin
Michael Chapman22-May-08 16:51
memberMichael Chapman22-May-08 16:51 
GeneralRe: IPAddressControl.Clear() needs an InvokeRequired Pin
wangkuang522-May-08 18:07
memberwangkuang522-May-08 18:07 
GeneralRe: IPAddressControl.Clear() needs an InvokeRequired Pin
Michael Chapman22-May-08 19:17
memberMichael Chapman22-May-08 19:17 
GeneralEvents Pin
amanda08926-Apr-08 19:14
memberamanda08926-Apr-08 19:14 
GeneralRe: Events Pin
Michael Chapman27-Apr-08 4:07
memberMichael Chapman27-Apr-08 4:07 
AnswerRe: Events Pin
Michael Chapman27-Apr-08 7:42
memberMichael Chapman27-Apr-08 7:42 
QuestionQuestion... Pin
amanda08927-Apr-08 11:54
memberamanda08927-Apr-08 11:54 
GeneralRe: Question... Pin
Michael Chapman27-Apr-08 12:11
memberMichael Chapman27-Apr-08 12:11 
GeneralRe: Question... Pin
amanda08927-Apr-08 12:44
memberamanda08927-Apr-08 12:44 
GeneralThank you! Pin
mory198425-Feb-08 23:55
membermory198425-Feb-08 23:55 
GeneralRe: Thank you! Pin
Michael Chapman26-Feb-08 5:35
memberMichael Chapman26-Feb-08 5:35 
GeneralVS 2008 Project Pin
great_scandinavian13-Dec-07 20:51
membergreat_scandinavian13-Dec-07 20:51 
GeneralRe: VS 2008 Project Pin
Michael Chapman14-Dec-07 5:36
memberMichael Chapman14-Dec-07 5:36 
GeneralRe: VS 2008 Project Pin
great_scandinavian15-Dec-07 19:25
membergreat_scandinavian15-Dec-07 19:25 
GeneralRe: VS 2008 Project Pin
Michael Chapman16-Dec-07 9:12
memberMichael Chapman16-Dec-07 9:12 
NewsBug Fix: ReadOnly property Pin
Michael Chapman22-Oct-07 22:03
memberMichael Chapman22-Oct-07 22:03 
GeneralReadOnly property Pin
t_suzuki17-Oct-07 21:50
membert_suzuki17-Oct-07 21:50 
GeneralRe: ReadOnly property Pin
Michael Chapman18-Oct-07 4:45
memberMichael Chapman18-Oct-07 4:45 
GeneralRe: ReadOnly property Pin
t_suzuki18-Oct-07 14:10
membert_suzuki18-Oct-07 14:10 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Terms of Use | Mobile
Web03 | 2.8.150603.1 | Last Updated 28 Apr 2008
Article Copyright 2005 by mid=5741
Everything else Copyright © CodeProject, 1999-2015
Layout: fixed | fluid