MAC地址的文本框和类
简介
编辑MAC地址字段配置虚拟网络的人所必需的。由于屏蔽文本框是在VS2005原始的,我决定创建自己的MAC地址的文本框。这是一个文本框,允许用户输入一个MAC地址,一类用于处理文本框。关于代码
这是非常相似mawnkay张贴的文章,因为他的努力,创造一个易于使用的IP文本框中的启发了我。是,是6个编辑框和五个静态":"他们之间的文本框。
,因为它似乎毫无意义的,只是为了给一个文本框,只返回一个字符串,我有一个类使用文本框中,以便您可以设置和保存的地址编程。以下是代码的细节。开发使用文本框
只需拖放的MACTools \ matb \ matb \ BIN \您在Visual Studio 2005设计工具箱(我把它下的"所有Windows窗体"选项卡)和Visual Studio的发布目录会自动把它添加DLL您的控件的列表。您也可以将项目添加到您现有的解决方案。然后,当您重新生成解决方案,它可以自动在最高层(上面的"所有Windows窗体")在你的工具箱中。
接下来,只需要使用它就像你将任何标准Windows窗体控件在设计编辑器,将其拖动到您的对话框。当您拖动到您的对话框的控制,它会自动作出正确的大小。不支持此框的大小。
覆盖的属性包括:文本背景色前景色
BackColor和ForeColor可编辑在设计师的属性窗口,在你的对话框,以配合其他控制。使用MAC地址类(MACADDR)
类组成的6个字节,每个代表文本框的六箱。所有你所要做的的是MACADDR类和TextBox的Text属性互换使用Address属性。例:matb macTextBox =新matb();MACADDR macVariable =新MACADDR();/ /保存用户输入到文本框中macVariable.Address = macTextBox.Text;/ /加载用户保存地址到文本框中macTextBox.Text = macVariable.Address;
您可以编辑的MAC地址字节单独使用的每一个字节属性:macVariable.FirstByte = 0X1A;macVariable.SecondByte = 0x2b;macVariable.ThirdByte = 0x3c;
macVariable.FourthByte = 0x4d;macVariable.FifthByte = 0x5e者;macVariable.SixthByte = 0x6f;
这里是一个小代码演练,在幕后发生的事情是什么。下面是私有变量,每个代表在TextBox控件对应的方块:/ /字节的MAC地址专用字节firstByte;专用字节secondByte;专用字节thirdByte;专用字节fourthByte;专用字节fifthByte;专用字节sixthByte;
现在,棘手的部分。我不得不制定一种方法,将字符串转换为一个字节,反之亦然。最难的部分是从字符串两个字母,如"1A",并转换成只有一个字节(因为逻辑是它是什么)。下面是属性类使用两者之间的转换/ / / LT; summarygt;/ / /获取或设置整个Mac地址的字符串值。/ / /注:包括结肠seperators,例如"1A:2B:3C:4D:5E:6fquot;/ / / summarygt;公共字符串的地址获得 { &
#160; 字符串的温度; TEMP = string.Format("{0:X2} {1:X2} {2:X2}:{3:X2}:{4:X2}:{5:X2} quot;
60; firstByte,secondByte,thirdByte
160; fourthByte,fifthByte,sixthByte);
60; 返回温度; } 设置 { 字符串[]温度;
0; 字节[] byTemp;
60; CHAR [] SEP =新的char [1]; 九月[0] =':'; TEMP = value.Split(SEP,6); / /格式为10-15十进制,FormatByte(AF)稍后解释 byTemp = FormatByte(临时); firstByte = byTemp [0]; secondByte = byTemp [1]; thirdByte = byTemp [2];
60; fourthByte = byTemp [3]; &
#160; fifthByte = byTemp [4]; sixthByte = byTemp [5]; }}
行:byTemp = FormatByte(临时);
实际上是肮脏的工作。它需要一个字符串数组,并将其转换成一个字节数组。这是不是最好的办法做到这一点,但它的作品/ / / 这是相当多了。现在,你有一类在您的处置,如果你想节省用户的MAC地址"文本框中输入。
源代码是包括在内,因此,如果有人遇到一个更好的方式做了一些,或增加另一部分代码,让我知道,我会急于作出改变自己。最终用户MAC地址的文本框
只允许一个用户键入一个有效的十六进制字符,不区分大小写。请注意,这并不真正做到任何错误检查,因为它只允许用户输入一个有效的十六进制值。自动设置焦点到下一个框,在每个框中键入用户一旦两个十六进制值。 ':'和' - '移动到下一个框。垫零到左边时的五个部分中的任何一个失去焦点。未来的建议
可能要迫使每一个字符大写时包装盒中的用户类型。此外,支持数据绑定可能是一个好主意(MacAddr.Address属性,TextBox控件的Text属性)。历史16/08/2006 17点42分科技委:关于":::::"字符串返回一个未经编辑的文本框的Text属性的固定的臭虫。10/08/2006 12点44分科技委:添加文本框控件的BackColor和ForeColor属性。包括代码中使用的小例子。07/06/2006 13点41分科技委:MACADDR类编程方式处理文本框。21/05/2006 01:07科技委:新增零填充到编辑框控件失去焦点时。14/05/2006 17:05科技委:关于失踪的两个大写字母的字符时,输入框的固定的臭虫。还增加了默认的零初始实例添加。
回答
×评论会员:八Kujawa 时间:2011/12/06 y'all知道,有一个内置的MAC地址在System.Net.NetworkInformation.PhysicalAddress类
×评论会员:。sfirouza 时间:2011/12/06这将是很好,如果你执行复制/剪切/粘贴功能的ContextMenuStrip和CTRL C,CTRL X,CTRL V,快捷键
×评论会员:塔哈扎耶德 时间:2011/12/06不错的工作。什么IP地址文本框中?
×评论会员:sfirouza 时间:2011/12/06目前已经是一个greate文章:http://www.codeproject.com/cs/miscctrl/IpAddrCtrlLib.asp
×评论会员:塔哈扎耶德 时间:2011/12/06窗口control.I需要Web控件
×评论会员:Melon00 时间:2011/12/06我extremly新的网络控制的东西。多少更多地参与编辑我的代码来支持Web应用程序?
×评论会员:sfirouza 时间:2011/12/06,如果像这样修改你的代码,它会更好:公共重写字符串文字
{
0; 得到
{
160; 如果(Box1.Text.Equals("")Box2.Text.Equals Box3.Text.Equals("")("")Box4.Text.Equals("")Box5.Text.Equals("")Box6.Text等于("")){ BR}
60; 返回"";
60; 返回string.Format("{0}:{1} {2}:{3} {4} {5}"吗?)",Box1.Text.Equals("00":Box1.Text,Box2 ("")?"00":Box2.Text Box3.Text.Equals("")"00":Box3.Text Box4.Text.Equals("")?"00":Box4。Text.Equals Box5.Text.Equals的。text,("")?"00":Box5.Text,Box6.Text.Equals("")"00":Box6.Text);
? }
; 集...
}
60;
×评论会员:游客 时间:2011/12/06Melon00:据我所知,箱子不会让你留下空白。是否有错误,需要我的注意,或你的思想,这将是更好,如果我允许用户给他们留下的空白?让我知道任何一种方式。
sfirouza
×评论会员:游客 时间:2011/12/06我不建议ü允许用户给他们留下的空白。的是,以下情形将导致您的控制返回Text属性":::::"。考虑的形式保存在退出控件的Text属性。如果用户打开该表格,并关闭它不与您控制交互":::::"字符串将被保存。我觉得这是一个错误,它需要你的关注。-修改6:14星期日八月十三日,2006年
Melon00
×评论会员:游客 时间:2011/12/06我是无法重现你的问题。当我跟我自己的对话步骤,我matb.Text的财产归还"00:00:00:00:00:00"。你送我一些源代码,你怎样得到的":::::"文本字符串,从我matb控制返回吗?感谢-在16点19分(星期二)2006年八月十五日,修改
sfirouza
×评论会员:游客 时间:2011/12/06结帐您的电子邮件收件箱请,我给你发了邮件连接到它的一个项目。
Melon00
×评论会员:游客 时间:2011/12/06我看着它,我明白你的意思。如果开发人员没有我的类的接口和公正的回报,而无需使用MACADDR类matb.Text财产,那么返回":::::"的字符串,当用户不编辑的任何字段。我已经纠正了这个CodeProject上管理,并张贴了我的变化。感谢您发现此错误,让我知道它。imgsrc=http://www.orcode.com/upimg/2011_12_06_21_45_17_1.gif
sfirouza
×评论会员:游客 时间:2011/12/06。谢谢你做所有的辛勤工作;)
Plennguyen
×评论会员:游客 时间:2011/12/06您的文章"如此之大你创建的Mac地址控制在VC吗?你中有我一些你的想法?感谢和问候PLEN阮
Melon00
×评论会员:游客 时间:2011/12/06我没有为VisualC(MFC)的创建。我会为您寻找到它今天给您回复。应很容易地转换到MFC虽然我在我的源代码包括MACADDR类。
Plennguyen
×评论会员:游客 时间:2011/12/06喜Melon00,因为我没有用C#还,我不知道如何转换到MFC。等待您的帮助。,,PLEN阮PLEN
Melon00
×评论会员:游客 时间:2011/12/06我已经将它看起来更深(对不起我花了这么久),但我看到有一种方式来创建自定义控件在MFC。你这样做的方式,你需要建立一个新的类并重写CWnd类。然后,在你的构造函数,你需要设置正确的大小和位置,将文本框和标签(详情见矿)的控制。你的文本框需要有一个KeyPress事件(不知道它是在MFC,但谷歌应该找到它)的消息映射功能,你应该能够设立类似的代码开采。让我知道如果这还不够让你开始。