/ / Encaminhar todas as propriedades de um controle - vb.net, winforms, propriedades, controles, encaminhamento

Encaminhar todas as propriedades de um controle - vb.net, winforms, propriedades, controles, encaminhamento

Estou fazendo um controle personalizado (é isso que eu faço,Sou designer de temas e estou tendo problemas com alguma coisa. O controle que estou fazendo é um controle RichTextBox personalizado. Como quero uma borda personalizada (bordas arredondadas) ao redor do RichTextBox, simplesmente tenho um controle com bordas personalizadas e um controle filho que é realmente um RichTextBox normal. Com o conjunto BorderStyle para nenhum, é assim:

Meu controle de caixa de texto avançado

Agora, é claro, o controle dos pais precisa tertodas as propriedades que um RichTextbox normal possui. Eu fiz manualmente todas as propriedades de uma caixa de texto comum, mas um RichTextBox tem muito mais propriedades e eu estava me perguntando: existe alguma maneira de "encaminhar" todas as propriedades do controle filho para o controle principal?

Talvez eu esteja explicando um pouco estranhamente. Basicamente, quando você altera a propriedade "s" Text "do controle principal, a propriedade Text do RichTextBox também deve ser alterada. Isso significa que eu tenho que escrever um evento personalizado para cada propriedade que um RichTextBox possui, não existe uma maneira de fazer isso automaticamente para cada propriedade?

Desde já, obrigado,

Mavamaarten.

Respostas:

1 para resposta № 1

Acontece que não há como fazer isso.


-1 para resposta № 2

Nota: eu respondi isso antes o postado teve o WinForms tag em sua pergunta. (Na verdade, eu o adicionei com base na resposta dele aqui.) Ainda assim, se você estiver usando o WPF, é assim que você o faria ...

A coisa mais fácil a fazer é substituir oControlTemplate com sua implementação interna. Em outras palavras, você está substituindo as partes "visuais" do controle RichTextBox, mas ainda é um controle RichTextBox.

Por exemplo, foi assim que substituí o visualde um TextBox para remover completamente todo o cromo e deixá-lo com nada além de uma borda simples. Mas ainda era um TextBox completo com todas as propriedades, etc.

Mais uma vez, procure Control Templating. Você também pode procurar por "Controles sem aparência".

<Style TargetType="{x:Type glc:EditableTextBlock2}" BasedOn="{StaticResource {x:Type TextBox}}">

<Setter Property="VerticalContentAlignment" Value="Center" />
<Setter Property="MinWidth" Value="20" />

<Setter Property="Template">
<Setter.Value>

<ControlTemplate TargetType="{x:Type glc:EditableTextBlock2}">

<Border Name="Bd"
SnapsToDevicePixels="True"
BorderThickness="1"
BorderBrush="{TemplateBinding Border.BorderBrush}"
Background="{TemplateBinding Border.Background}" >

<ScrollViewer Name="PART_ContentHost"
SnapsToDevicePixels="True"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />

</Border>

</ControlTemplate>

</Setter.Value>
</Setter>

</Style>