none
Textbox Personalizada RRS feed

  • Pergunta

  • Olá a todos

    Estou migrando do VB6 para o VB.NET 2008, e preciso fazer um sistema que tenha campos(textbox) personalizados.
    A idéia é criar 1 campo em um UserControl para poder utilizar esse controle mais rapidamente nesse e em outros projetos futuros. ( Não sei se é a melhor forma de se fazer isso)
    O código do campo e suas personalização já está pronta e funcionando.
    Mas não consigo herdar as propriedades da textbox pelo usercontrol, nem sei se isso é possível. Dá erro Base Class...
    Consegui criar uma propriedade para o usercontrol, pegar o texto do textbox
    Mas eu precisaria também que eu pudesse no controle usar o Databindings Text, pois o que preencherá o campo é uma base de dados.
    Entao gostaria da ajuda de vocês, ou para  herdar todas as propriedades do textbox, ou para criar a propriedade Databindings Text da melhor forma

    Segue parte do código...
    Só avisando, Iniciei um projeto no VB.NET e escolhi Windows Forms Control Library

    Obrigado desde já
    Public Class textbox_moeda
    
        Inherits System.Windows.Forms.UserControl
        'Inherits System.Windows.Forms.TextBox
    
        'Friend WithEvents caixa As New System.Windows.Forms.TextBox
    
        Property texto() As String
    
            Get
                Return TextBox1.Text
            End Get
            Set(ByVal Value As String)
                TextBox1.Text = Value
            End Set
    
        End Property
    segunda-feira, 4 de janeiro de 2010 03:02

Respostas

  • Se você criar uma classe normal e herdar de TextBox vai funcionar normalmente, agora se você criar um UserControl e depois mudar para TextBox ele vai dar erro pois a classe base no classe.designer.vb ainda continua como UserControl.

    No erro que aparece tem a opção de mudar a classe base.

    Escolha a oção Change class '' to inherit from System.Windows.Forms.TextBox.

    Vc pode criar um UserControl com um TextBox dentro.
    segunda-feira, 4 de janeiro de 2010 14:01
  • Quando vc herda de algum controle tipo textbox o designer não permite arrastar controles, apenas quando vc herda de UserControl ele permite que vc possa desenhar os objetos visualmente.
    Se vc herdar de um textbox o visual dele vai ser igual a um textbox, você poderá apenas modificar o visual dele se sobrescrever o método paint e desenhar o que vc quiser, vc pode apenas criar propriedades a mais.

    Depois que vc herdar do textbox, vc não precisa adicionar o textbox na tela cinza, ela vai ficar assim mesmo é normal. Se vc compilar o projeto o seu novo textbox vai aparecer no ToolBox ai sim vc pode arrastar ele para um formulario.
    segunda-feira, 4 de janeiro de 2010 17:03

Todas as Respostas

  • Se você criar uma classe normal e herdar de TextBox vai funcionar normalmente, agora se você criar um UserControl e depois mudar para TextBox ele vai dar erro pois a classe base no classe.designer.vb ainda continua como UserControl.

    No erro que aparece tem a opção de mudar a classe base.

    Escolha a oção Change class '' to inherit from System.Windows.Forms.TextBox.

    Vc pode criar um UserControl com um TextBox dentro.
    segunda-feira, 4 de janeiro de 2010 14:01
  • Obrigado pela resposta,

    Tentei aqui e realmente herdou, mas ficou estranho,
    a Tela do UserControl (designer) sumiu, eu devo adicionar uma textbox na tela cinza?

    deu erro na execução:

    System.ArgumentException was unhandled
      Message="Assembly 'caminho.dll' doesn't contain any UserControl types."

    Quando eu adiciono não dá erro, porém não está pegando as personalizações que fiz.

    não sei mais o que fazer, você pode me explicar passo a passo a fazer a textbox personalizada para que funcione e que eu possa utilizá-la em outros projetos com as propriedades herdadas, ou conhece algum tutorial na internet que explique de forma fácil ? Não conheço bem essa parte de controles, fiz apenas uma .dll em vb6 há 5 anos atrás.

    Muito Obrigado

     
    segunda-feira, 4 de janeiro de 2010 16:15
  • Quando vc herda de algum controle tipo textbox o designer não permite arrastar controles, apenas quando vc herda de UserControl ele permite que vc possa desenhar os objetos visualmente.
    Se vc herdar de um textbox o visual dele vai ser igual a um textbox, você poderá apenas modificar o visual dele se sobrescrever o método paint e desenhar o que vc quiser, vc pode apenas criar propriedades a mais.

    Depois que vc herdar do textbox, vc não precisa adicionar o textbox na tela cinza, ela vai ficar assim mesmo é normal. Se vc compilar o projeto o seu novo textbox vai aparecer no ToolBox ai sim vc pode arrastar ele para um formulario.
    segunda-feira, 4 de janeiro de 2010 17:03