Como acessar as propriedades de um UserControl em C #
-
03-07-2019 - |
Pergunta
Eu fiz um C # usercontrol com uma caixa de texto e um richtextbox.
Como posso acessar as propriedades do richtextbox de fora da usercontrol.
Por exemplo .. se eu colocá-lo em uma forma, como eu posso usar o propertie texto do richtextbox ???
graças
Solução
forma mais limpa é expor as propriedades desejadas, como propriedades do seu usercontrol, por exemplo:
class MyUserControl
{
// expose the Text of the richtext control (read-only)
public string TextOfRichTextBox
{
get { return richTextBox.Text; }
}
// expose the Checked Property of a checkbox (read/write)
public bool CheckBoxProperty
{
get { return checkBox.Checked; }
set { checkBox.Checked = value; }
}
//...
}
Desta forma, você pode controlar quais propriedades deseja expor e se eles devem ser de leitura / gravação ou somente leitura. (É claro que você deve usar nomes melhores para as propriedades, dependendo do seu significado).
Outra vantagem dessa abordagem é que ele esconde a implementação interna de seu controle de usuário. Se você quiser trocar seu controle richtext com um diferente, você não vai quebrar os chamadores / usuários de seu controle.
Outras dicas
Alterar o modificador de acesso ( "modificadores") do RichTextBox na grade de propriedade para pública.
Adicionar uma propriedade para o usercontrol como este
public string TextBoxText
{
get
{
return textBox1.Text;
}
set
{
textBox1.Text = value;
}
}
Recentemente, tive alguns problemas fazendo isso com uma classe personalizada:
Um controle de usuário tinha uma propriedade pública que era de um tipo de classe personalizado. O designer por tentativas padrão para atribuir algum valor a ele, assim, no código do designer, o userControlThing.CustomClassProperty = null
linha estava sendo adicionado automaticamente.
A intenção era ser capaz de fornecer o controle de usuário com uma classe personalizada em qualquer ponto durante a execução do programa (para alterar valores visíveis para o usuário). Porque a parte set {}
não verificar se há valores nulos, vários erros foram surgindo.
A solução foi mudar a propriedade de um privado, e usar dois métodos públicos para definir e obter o valor. O designer vai tentar propriedades auto-atribuir, mas deixa métodos sozinho.
Você precisa ter uma propriedade pública para o richtextbox, ou expor alguma outra propriedade que faz o trabalho de definir o texto richtextbox como:
private RichTextBox rtb;
public string RichTextBoxText
{
get
{
return rtb.Text;
}
set
{
rtb.Text = value;
}
}