所以我的主窗体上有 2 个控件,一个自定义 hexbox 控件和一个richtextbox,如下图所示(它不会让我发布图像,所以必须点击链接)。我想做的是根据用户在 hexbox 控件中单击的位置,右侧的富文本框将滚动到关联的行。
http://i.stack.imgur.com/8PfRt.jpg
我当前遇到的问题是处理 hexbox 点击的代码包含在一个单独的类(hexbox.cs)中,因此我无法获取点击的位置并滚动到包含在 mainform 类中的richtextbox。我试图创建一个新的主窗体实例来访问richtextbox,但显然这个结果是创建一个没有原始内容的新richtexbox。
这是 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();
}
}