Estou tentando reduzir a oscilação no meu TreeViewcontrole usando buffer duplo. O uso das recomendações descritas aqui parece funcionar, o que define o estilo de janela estendida TVS_EX_DOUBLEBUFFER disponível desde o Vista: Treeview tremendo?
No entanto, eu preferiria não ter odependência extra do user32.dll, pois o projeto está definido para ser executado também no Mono. De alguma forma, é possível definir o estilo da janela estendida TVS_EX_DOUBLEBUFFER sem usar P / Invoke?
Eu esperava poder usar o CreateParams para fazer isso, mas não parecia funcionar. Aqui está o que eu tentei:
const int TVS_NOHSCROLL = 0x8000;
const int TVS_EX_DOUBLEBUFFER = 0x0004;
protected override CreateParams CreateParams
{
get
{
var parameters = base.CreateParams;
parameters.Style |= TVS_NOHSCROLL;
parameters.ExStyle |= TVS_EX_DOUBLEBUFFER;
return parameters;
}
}
O TVS_NOHSCROLL é apenas para demonstrar a configuraçãoum estilo de janela usando CreateParams que funciona. De acordo com a documentação, você pode usar o ExStyle para definir estilos de janela estendidos, mas infelizmente isso não parece funcionar para o TreeView.
Alguma ideia?
Respostas:
0 para resposta № 1O buffer duplo nos controles .NET Windows Forms pode ser definido pela propriedade com o mesmo nome:
yourControl.DoubleBuffered = true;
Você pode usar o SetStyle
método do controle para definir estilos adicionais.