1

Microsoft 組み込みのレジストリ エディターからウィンドウを再現しようとしています。このウィンドウは、値をクリックしてコンテキスト メニューから [Modify Binary Data...] を選択すると開くウィンドウです。

目標は、Windows フォームを使用して、.NET C# アプリケーションで同一の (!)ウィンドウを作成することです。

問題は、バイナリ データを含むウィンドウに表示される te​​xtBox です。RichTextBox を使用してみましたが、特にデータの編集とこの textBox の動作に関しては、見た目ほど単純ではありません。

だから私は2つの質問があります:

  1. Windowsフォームを使用してC#で同一のテキストボックスを実現するには? このテキストボックスを再現する他の方法を知っているかもしれません。
  2. このテキストボックスで使用されているフォント名も必要ですが、見つかりませんでした:)

ありがとう!

4

2 に答える 2

2

これは、Winforms 用の 16 進エディター コントロールを含むオープン ソース プロジェクトで、少なくとも非常によく似ています。

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

要件に応じて変更できると思います。ただし、コントロールのソース コードは約 6000 行のコード (ダース以上のユーティリティ クラスを含む) であることに注意してください。「Control」から直接継承し、GDI+ を使用してすべてのテキスト表示を行います (したがって、変更された DataGrid または RichTextBox はありません)。

于 2012-08-21T19:53:28.223 に答える
2

これにアプローチする方法は 2 つあります。1 つ目は DataGrid で、透明なグリッド線と列間の正確な余白を持つように細心の注意を払ってスタイル設定され、16 進数のみを適用するフィルターを備えています。これらすべてを、ASCII 表示用のリッチテキスト ボックスと一緒に設定し、コードでそれらの間の選択を同期します。

別の方法として、DataGrid を TextBoxes のコレクションに置き換えることもできます。これは、再び非表示の境界線用にスタイル設定され、ユーザーがさらにデータを追加すると、コレクションに新しいテキスト ボックスが自動的に追加されます。

全体として、特に WinForms では非常に多くの作業のように思えます。WPF を使用すると、特にスタイリングが少し簡単になるかもしれませんが、それでも多くの作業が必要です。

そのコントロールの名前について - 私は Spy++ を使ってそれを嗅ぎ出そうとしましたが、それは "HEX" という名前のウィンドウ クラスとして登録されているようですが、それが本当にあなたをどこかに連れて行くかどうかはわかりません:

ここに画像の説明を入力

于 2012-08-21T19:44:11.897 に答える