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!

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top