Como mover barra de rolagem por uma linha? (Em C # CaixaTextoRica)
-
03-07-2019 - |
Pergunta
Para o meu C # RichTextBox, eu quero fazer programaticamente a mesma coisa que clicar na seta no topo de uma barra de rolagem vertical, que se move a exibição RichTextBox-se por uma linha. Qual é o código para isso? Obrigado!
Solução
Aqui está o que eu faço:
using System.Runtime.InteropServices;
[DllImport("user32.dll")]
static extern int SendMessage(IntPtr hWnd, uint wMsg,
UIntPtr wParam, IntPtr lParam);
, em seguida, ligue para:
SendMessage(myRichTextBox.Handle, (uint)0x00B6, (UIntPtr)0, (IntPtr)(-1));
parece funcionar OK -. Talvez seja necessário ajustar as coisas um pouco, embora
Espero que ajude.
Outras dicas
Para referência futura a mensagem EM_LINESCROLL é o que você enviar para qualquer multi-linha de edição de controle para definir a posição de rolagem. Você pode rolar verticalmente ou horizontalmente. Consulte MSDN para mais detalhes.
Você também pode usar o método Rich Edit Selection, onde você define o índice de caractere (que você pode obter com EM_LINEINDEX), em seguida, chamar RichEdit.ScrollToCaret ou seja:
RichEdit.SelectionStart = SendMessage(RichEdit.Handle, EM_LINEINDEX, ScrollTo, 0);
RichEdit.ScrollToCaret();
Isto irá percorrer essa linha para a parte superior do controle de edição.
window.scrollBy (0,20);
Isto irá rolar a janela. 20 é um valor aproximado eu usei no passado, que normalmente é igual a uma linha ... mas é claro que o tamanho da fonte pode afetar o quão longe uma linha realmente é.
Se você pode obter o controle de rolagem para caixa de texto rico, você deve ser capaz de obter sua propriedade SmallChange e usar isso para rolar o texto.