RichTextBox에서 검색 할 때 사용할 모덜리스 찾기 대화 상자를 만들었으며 발견 된 텍스트를 선택한 후 찾기 대화 상자의 위치를 지정하는 데 문제가있어서 선택한 텍스트를 포함하지 못합니다. 나는 다음과 같은 사용하여 클라이언트 영역에 줄 번호 상대를 얻기 위해 노력했다 :발견 된 텍스트를 찾기 대화 상자를 어떻게 배치합니까?
this.lineCount = this.rtb.Height/(this.rtb.Font.Height+2);
rtb.Select(rtbIndex, searchText.Length);
int linePos = (this.rtb.GetLineFromCharIndex(this.rtb.GetFirstCharIndexOfCurrentLine())) % this.lineCount;
if(linePos<(this.lineCount/2))
{
this.Location = rtb.PointToScreen(new Point(rtb.Bounds.Left, rtb.Bounds.Bottom - this.Height));
}
else
{
this.Location = rtb.PointToScreen(new Point(rtb.Bounds.Left, rtb.Bounds.Top));
}
this.lineCount 글꼴 높이와를 RichTextBox의 높이에 따라 클라이언트 영역에 맞게 라인의 수입니다. 그것은 제가 확인한 정확한 가치입니다. lineNum이 this.lineCount의 값의 절반보다 작 으면 내 코드가 richtextbox의 아래쪽에 찾기 대화 상자를 배치합니다. 그렇지 않으면 상단에서
그러나, linePos는 신뢰할 수 없습니다. 선택한 텍스트의 행이 19 행이고 lineCount가 20 일 때 대화 상자가 선택된 텍스트 위로 이동하게되면 값이 0 인 경우가 있습니다. 따라서 richtextbox가 선택한 텍스트를 표시하는 위치를 안정적으로 계산할 수 없습니다. 당신은 문자 위치를 직접 계산할 필요가 없습니다
GetPositionFromCharIndex
방법을 사용하여 얻을 수 있습니다. 너 뭔가 필요한거야? –