そのため、メイン フォームに 2 つのコントロール、カスタム hexbox コントロール、および以下の図のようなリッチテキスト ボックスがあります (画像を投稿できないため、リンクをたどる必要があります)。私がやりたいことは、ユーザーが hexbox コントロールでクリックした場所に応じて、右側のリッチ テキスト ボックスが関連する行にスクロールすることです。
http://i.stack.imgur.com/8PfRt.jpg
私が抱えている現在の問題は、hexbox のクリックを処理するコードが別のクラス (hexbox.cs) に含まれているため、クリックの場所を取得して関連する行にスクロールできないことです。 mainform クラスに含まれる richtextbox。リッチテキストボックスにアクセスするためにメインフォームの新しいインスタンスを作成しようとしましたが、明らかに、元のコンテンツを持たない新しいリッチテキストボックスが作成されます。
ヘルプがあれば、マウスクリックを処理する hexbox クラスのコードを次に示します。
void SetCaretPosition(Point p)
{
System.Diagnostics.Debug.WriteLine("SetCaretPosition()", "HexBox");
if (_byteProvider == null || _keyInterpreter == null)
return;
long pos = _bytePos;
int cp = _byteCharacterPos;
if(_recHex.Contains(p))
{
BytePositionInfo bpi = GetHexBytePositionInfo(p);
pos = bpi.Index;
cp = bpi.CharacterPosition;
SetPosition(pos, cp);
ActivateKeyInterpreter();
UpdateCaret();
Invalidate();
}
else if(_recStringView.Contains(p))
{
BytePositionInfo bpi = GetStringBytePositionInfo(p);
pos = bpi.Index;
cp = bpi.CharacterPosition;
SetPosition(pos, cp);
ActivateStringKeyInterpreter();
UpdateCaret();
Invalidate();
}
}