65.9K
CodeProject 正在变化。 阅读更多。
Home

多进制数字编辑器

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.85/5 (6投票s)

2010年3月22日

CPOL

4分钟阅读

viewsIcon

38540

downloadIcon

525

一个用于编辑二进制、八进制、十进制和十六进制数字的 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 所示。确保选中该组件,然后单击确定,该组件将出现在工具箱中。

addreference.jpg

图 1:将 MultipleBaseNumberEditor 组件添加到项目

MultipleBaseNumberEditor 从工具箱拖放到设计器中的窗体上,如图 2 所示。查看属性视图中的 MultipleBaseNumberEditor 属性(图 3)。
除了控件的大多数常用属性外,我还列出了 MultiBaseNumberEditor 的特定属性:

  • Base
  • 最低
  • 最大
  • DisplayBaseChooserButton
  • BaseChooserStyle
  • ConfigBinary
  • ConfigOctal
  • ConfigDecimal
  • ConfigHexadecimal
  • DisplayAllBaseConversions

Form1.jpg

图 2:将 MultipleBaseNumberEditor 拖放到窗体上

properties.jpg

图 3:查看属性视图中的属性

Base 是 BaseNumber 类型。当前定义的基数定义如下:

  public enum BaseNumber {
    Binary,
    Octet,
    Decimal,
    Hexadecimal
  };         

Value 是一个无符号 long。该控件不支持负值。

MinimumMaximum 定义了 Value 可以达到的极限。

使用 DisplayBaseChooserButton 来显示或隐藏基数选择按钮。通过选择按钮,控件允许用户单击并选择他们想要显示该数字的基数。

BaseChooserStyle 定义了选择按钮的样式。它可以是一个简单的按钮,也可以是一个下拉列表。

  public enum BaseChooserStyle {
    Button,
    Combo
  } 

ConfigBinaryConfigOctalConfigDecimalConfigHexadecimal 是每个数字基数的特定设置,允许用户设置控件是否应显示前缀、后缀以及是否用 '0' 字符进行左填充。

MultipleBaseNumberEditor 提供了一个默认的工具提示,其中打印了当前值的所有可用格式。要打开或关闭该工具提示,请设置 DisplayAllBaseConversions

除了继承自 UserControl 的事件外,该控件还提供了以下事件:

  public event EventHandler ValueChanged; 	// Occurs when Value changes
  public event EventHandler BaseChanged; 	// Occurs when the base number changes

图 4 显示了具有不同设置的 MultipleBaseNumberEditor 在窗体中的显示。

sample.jpg

图 4:示例视图

此外,此程序集符合 CLS 标准(有关 CLS 标准的更多信息:http://msdn.microsoft.com/en-us/library/bhc3fa7f.aspx)。

未来工作

  • 此控件扩展了 UserControl。它也可以扩展 TextBox。扩展 TextBox 的挑战之一是如何绘制或添加此处添加的其他控件以选择基数(可以是按钮或组合框)。
  • 一个类似控件,用于处理大型字节数组,以任何选定的基数显示组。
  • 可以将此控件扩展到任何基数的编辑器(我想知道其目的)。可以添加更多功能。
  • 提供更大的灵活性,允许控件显示用户可以选择的基数。

历史

  • 2010 年 3 月 22 日:首次发布
© . All rights reserved.