sono in grado ora di sincronizzare i miei due RichTextBox
utilizzando questa pozione di codice:RichTextBox convertire un numero di riga per far scorrere barra di posizione
private const int SB_HORZ = 0x0;
private const int SB_VERT = 0x1;
private const int WM_HSCROLL = 0x114;
private const int WM_VSCROLL = 0x115;
private const int SB_THUMBPOSITION = 4;
[DllImport("user32.dll", CharSet = CharSet.Auto)]
private static extern int GetScrollPos(int hWnd, int nBar);
[DllImport("user32.dll")]
private static extern int SetScrollPos(IntPtr hWnd, int nBar, int nPos, bool bRedraw);
[DllImport("user32.dll")]
private static extern bool PostMessageA(IntPtr hWnd, int nBar, int wParam, int lParam);
internal int HScrollPos
{
private get { return GetScrollPos((int)this.Handle, SB_HORZ); }
set
{
SetScrollPos((IntPtr)this.Handle, SB_HORZ, value, true);
PostMessageA((IntPtr)this.Handle, WM_HSCROLL, SB_THUMBPOSITION + 0x10000 * value, 0);
}
}
internal int VScrollPos
{
get { return GetScrollPos((int)this.Handle, SB_VERT); }
set
{
SetScrollPos((IntPtr)this.Handle, SB_VERT, value, true);
PostMessageA((IntPtr)this.Handle, WM_VSCROLL, SB_THUMBPOSITION + 0x10000 * value, 0);
}
}
posso sincronizzare il RichTextBoxes
mentre premuto il tasto, e Vscroll
evento. In effetti questo non è il mio obiettivo, voglio sincronizzare il RichTextBoxes
basandosi sul contenuto, quello che mi serve:
- ottenere la forma attuale linea non selezionata
RichTextBox
. - Impostare la posizione della barra di scorrimento utilizzando il numero di linea nell'altro
RichTextBox
(senza perdere lo stato attivo da quello corrente). - Ottieni il numero di riga dalla posizione della barra di scorrimento.
Nota: siete invitati a chiedere se avete bisogno di più dettagli.
Grazie in anticipo.
Penso che questo esempio sarà utile per voi http://www.codeproject.com/Articles/12152/Numbering-lines- of-RichTextBox-in-NET – askeet
Questa applicazione WinForm? – Ian
sì, un modulo di Windows –