Come spostare la barra di scorrimento verso l'alto di una riga? (In C # RichTextBox)

StackOverflow https://stackoverflow.com/questions/205794

  •  03-07-2019
  •  | 
  •  

Domanda

Per il mio RichTextBox C #, voglio fare programmaticamente la stessa cosa che fare clic sulla freccia su nella parte superiore di una barra di scorrimento verticale, che sposta il display RichTextBox su di una riga. Qual è il codice per questo? Grazie!

È stato utile?

Soluzione

Ecco cosa faccio:

using System.Runtime.InteropServices;

[DllImport("user32.dll")]
static extern int SendMessage(IntPtr hWnd, uint wMsg, 
                               UIntPtr wParam, IntPtr lParam);

quindi chiama:

SendMessage(myRichTextBox.Handle, (uint)0x00B6, (UIntPtr)0, (IntPtr)(-1));

Sembra funzionare bene, tuttavia potresti dover modificare un po 'le cose.

Spero che sia d'aiuto.

Altri suggerimenti

Per riferimento futuro, il messaggio EM_LINESCROLL è ciò che si invia a qualsiasi controllo di modifica multilinea per impostare la posizione di scorrimento. Puoi scorrere in verticale o in orizzontale. Vedi MSDN per i dettagli.

Puoi anche utilizzare il metodo di selezione Rich Edit, in cui puoi impostare l'indice dei caratteri (che puoi ottenere con EM_LINEINDEX), quindi chiamare RichEdit.ScrollToCaret, ovvero:

RichEdit.SelectionStart = SendMessage(RichEdit.Handle, EM_LINEINDEX, ScrollTo, 0);
RichEdit.ScrollToCaret();

Questo farà scorrere quella linea in cima al controllo di modifica.

window.scrollBy (0,20);

Questo farà scorrere la finestra. 20 è un valore approssimativo che ho usato in passato che in genere è uguale a una riga ... ma ovviamente la dimensione del carattere può influire sulla distanza effettiva di una riga.

Se riesci a ottenere il controllo di scorrimento per la casella rich text, dovresti essere in grado di ottenere la sua proprietà SmallChange e usarla per scorrere il testo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top