1

我正在尝试从 Microsoft 内置注册表编辑器中重现一个窗口。该窗口是在单击值时从上下文菜单中选择“修改二进制数据...”时打开的窗口。

目标是使用 Windows 窗体在我的 .NET C# 应用程序中创建一个相同的(!)窗口。

问题是显示在包含二进制数据的窗口中的文本框。我曾尝试使用 RichTextBox,但它并不像看起来那么简单,尤其是在编辑数据和此文本框的行为时。

所以我有两个问题:

  1. 如何使用 Windows 窗体在 C# 中实现相同的文本框?也许你知道一些其他的方法来重现这个文本框?
  2. 我还需要这个文本框中使用的字体名称,我找不到它:)

谢谢!

4

2 回答 2

2

我可以想到两种方法来解决这个问题。第一个是 DataGrid,经过精心设计,具有透明的网格线和列之间的精确边距,过滤器仅强制使用十六进制数字。所有这些都设置在一个用于 ASCII 显示的富文本框旁边,您的代码会同步它们之间的选择。

或者,您可以将 DataGrid 替换为 TextBoxes 的集合,再次为不可见边框设置样式,当用户添加更多数据时自动将新的文本框添加到集合中。

总而言之,这似乎是一项艰巨的工作,尤其是在 WinForms 中 - WPF 可能会使这更容易一些,尤其是样式,但仍然需要大量工作。

关于该控件的名称 - 我尝试使用 Spy++ 来嗅探它,它似乎已注册为一个名为“HEX”的窗口类,但我不确定这是否真的能让你有所收获:

在此处输入图像描述

于 2012-08-21T19:44:11.897 回答
2

这是一个包含 Winforms 十六进制编辑器控件的开源项目,看起来至少非常相似:

http://sourceforge.net/projects/hexbox/

我想您可以根据自己的要求进行相应的修改。但请注意,该控件的源代码约为 6000 行代码(包括十几个实用程序类)。它直接继承自“Control”并使用 GDI+ 显示所有文本(因此无需修改 DataGrid 或 RichTextBox)。

于 2012-08-21T19:53:28.223 回答