/ / É possível configurar TVS_EX_DOUBLEBUFFER sem usar p / invoke? - c #, winforms, treeview

É possível definir TVS_EX_DOUBLEBUFFER sem usar p / invoke? - c #, winforms, treeview

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 № 1

O 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.