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

Foi útil?

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;
    }
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top