多进制数字编辑器






4.85/5 (6投票s)
一个用于编辑二进制、八进制、十进制和十六进制数字的 Windows Forms 编辑器
引言
我最初编写此组件的动机是我当时正在工作,编写一个支持十进制和十六进制数字编辑的组件。当我搜索互联网上的控件或代码时,我意识到几乎没有我想要的东西。可能很少有人真正需要输入诸如二进制、八进制或十六进制之类的数字基数,但我们还是做出来了。
起初,我的目的是展示我开发的成果和代码,但除了代码不是很长之外,在文章中描述它似乎很无聊而且不必要地冗长。因此,本文仅展示控件的功能,如果读者愿意,可以下载源代码或程序集。
背景
此代码使用 Visual Studio 2008 Express Edition 编写,需要 .NET Framework 3.5。使用 Microsoft 的 FxCop 进行程序集验证。代码文档文件使用 Doxygen 生成。
Using the Code
MultipleBaseNumberEditor
是一个 Windows Forms 组件,它扩展了 System.Windows.Forms.UserControl
并定义了一个允许以二进制、八进制、十进制或十六进制的任何基数编辑数字的编辑器。要在您的项目中 M3使用 MultipleBaseNumberEditor
,您可以将源代码 MultiBaseNumberEditor.cs 添加到您的解决方案中,或添加 numbersEditors
程序集引用。将源代码添加到项目需要该项目先编译一次,然后它才会出现在 Visual Studio 的工具箱中(在您的项目选项卡下)。
也可以将程序集注册到 GAC。为此,请按照此链接中的说明操作:http://msdn.microsoft.com/en-us/library/ex0ss12c(VS.80).aspx
如果程序集未注册,则在尝试将其添加到工具箱时,该控件不会出现在 .NET Framework Components 中。要手动将其添加到工具箱而不注册到 GAC,请单击浏览并选择 numbersEditors.dll。
要通过“选择工具箱项”手动添加 MultipleBaseNumberEditor
组件,请右键单击工具箱区域并选择“选择项”,然后单击“浏览...”,找到 numbersEditors.dll 并单击打开。该组件将出现在列表中,如图 1 所示。确保选中该组件,然后单击确定,该组件将出现在工具箱中。
MultipleBaseNumberEditor
组件添加到项目将 MultipleBaseNumberEditor
从工具箱拖放到设计器中的窗体上,如图 2 所示。查看属性视图中的 MultipleBaseNumberEditor
属性(图 3)。
除了控件的大多数常用属性外,我还列出了 MultiBaseNumberEditor
的特定属性:
Base
值
最低
最大
DisplayBaseChooserButton
BaseChooserStyle
ConfigBinary
ConfigOctal
ConfigDecimal
ConfigHexadecimal
DisplayAllBaseConversions
MultipleBaseNumberEditor
拖放到窗体上Base 是 BaseNumber
类型。当前定义的基数定义如下:
public enum BaseNumber {
Binary,
Octet,
Decimal,
Hexadecimal
};
Value
是一个无符号 long
。该控件不支持负值。
Minimum
和 Maximum
定义了 Value
可以达到的极限。
使用 DisplayBaseChooserButton
来显示或隐藏基数选择按钮。通过选择按钮,控件允许用户单击并选择他们想要显示该数字的基数。BaseChooserStyle
定义了选择按钮的样式。它可以是一个简单的按钮,也可以是一个下拉列表。
public enum BaseChooserStyle {
Button,
Combo
}
ConfigBinary
、ConfigOctal
、ConfigDecimal
和 ConfigHexadecimal
是每个数字基数的特定设置,允许用户设置控件是否应显示前缀、后缀以及是否用 '0' 字符进行左填充。
MultipleBaseNumberEditor
提供了一个默认的工具提示,其中打印了当前值的所有可用格式。要打开或关闭该工具提示,请设置 DisplayAllBaseConversions
。
除了继承自 UserControl
的事件外,该控件还提供了以下事件:
public event EventHandler ValueChanged; // Occurs when Value changes
public event EventHandler BaseChanged; // Occurs when the base number changes
图 4 显示了具有不同设置的 MultipleBaseNumberEditor
在窗体中的显示。
此外,此程序集符合 CLS 标准(有关 CLS 标准的更多信息:http://msdn.microsoft.com/en-us/library/bhc3fa7f.aspx)。
未来工作
- 此控件扩展了
UserControl
。它也可以扩展TextBox
。扩展TextBox
的挑战之一是如何绘制或添加此处添加的其他控件以选择基数(可以是按钮或组合框)。 - 一个类似控件,用于处理大型字节数组,以任何选定的基数显示组。
- 可以将此控件扩展到任何基数的编辑器(我想知道其目的)。可以添加更多功能。
- 提供更大的灵活性,允许控件显示用户可以选择的基数。
历史
- 2010 年 3 月 22 日:首次发布