私はメインフォーム、カスタムhexboxコントロール、richtextboxの2つのコントロールを下の図のように持っています(リンクをたどる必要があるので画像を投稿できません)。私がしたいのは、ユーザーがhexboxコントロールでクリックした場所に依存し、右側のリッチテキストボックスは関連する行にスクロールします。syncカスタムコントロールとrichtextbox C#
http://i.stack.imgur.com/8PfRt.jpg
私がいる現在の問題は、hexboxクリックを処理するコードは、別のクラス(hexbox.cs)に含まれているということですので、私は、その後の場所を取ることができないんだけどメインフォームクラスに含まれているリッチテキストボックス内の関連する行をクリックしてスクロールします。私は、richtextboxにアクセスするためにメインフォームの新しいインスタンスを作成しようとしましたが、明らかに、この結果は元のコンテンツのない新しいrichtexboxの作成です。
相続人は、その任意のヘルプ場合はマウスクリックを扱うhexboxクラスのコード:私はきちんとundersntand場合
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();
}
}