Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di macse
    Registrato dal
    Dec 2002
    Messaggi
    138

    [C#] DERIVARE UNA CLASSE

    ciao a tutti,
    ho questo quesito.
    In un mio progetto, premetto che sono alle prime righe con il c#, ci saranno dei campi data-ora da compilare in maniera rapida e quindi ho creato, utilizzando gli eventi di una textbox (KeyDown e KeyPress), una textbox che accetta solo numeri e che li inserisce in sovrascrittura su una maschera sempre fissa e visibile:

    00/00/0000 00.00.00 (GG/MM/AAAA HH.MM.SS)

    quindi quando digito i numeri questi si inseriscono al posto degli zeri, saltando gli slash e i punti.
    ovviamente ho gestito anche i tasti di BackSpace, il Canc, e tutti gli altri.

    La mia domanda è:
    E' possibile creare una classe nuova che eredità da una classe Textbox e che implementa in maniera automatica queste nuove funzionalità, in modo che nel mio progetto io posso richiamare direttamente il controllo modificato?

    E se la risposta è affermativa qual'è il percorso?

    grazie Macse

  2. #2
    Utente di HTML.it L'avatar di biste
    Registrato dal
    Apr 2001
    Messaggi
    877
    Sì certo, si chiamano custom controls e la tecnica che hai ipotizzato è corretta: erediti dalla TextBox e ne personalizzi il comportamento.
    Un buon esempio di quello che vuoi fare in questo articolo:
    http://www.codeproject.com/cs/miscctrl/maskededit.asp

    Se sei alle prime armi con lo sviluppo di custom controls e ti interessa ti consiglio di guardare i webcasts di Microsoft a riguardo: http://www.microsoft.com/italy/msdn/...ndowsform.mspx
    UGIdotNET
    Microsoft .NET MCAD
    C++, C#, VB6, VB.NET, ASP, ASP.NET
    SQL Server 2000

  3. #3
    Non ho capito molto quello che hai chiesto, ma provo ugualmente a risponderti.

    Sembra che tu abbia derivato una textbox per creare una tua DateTextbox ( la chiamo cosi' giusto per capirci ).

    A livello di codice avrai sicuramente scritto :

    codice:
    namespace MyControlsLibrary
    {
        public class DateTextbox : TextBox
        {
          [ tuo codice ]
        }
    }

    A questo se vuoi utilizzare questo nuovo control nella stessa solution, e' sufficiente scrivere:

    codice:
    using MyControlsLibrary
    
    [...]
    
    private void InitializeComponent()
    {
      DateTextbox myDateTextBox = new DateTextbox();
    }
    Se vuoi tenere tutti i tuoi nuovi controls in una libreria separata, e' sufficiente includere la libreria nella tua solution, oppure aggiungere la libreria nei reference del progetto

    Se volessi crearti un control che derivi dal tuo DateTextBox() devi scrivere:

    codice:
    using MyControlsLibrary
    
    public class SpecializedDateTextBox : DateTextBox 
    {
     [ codice per implementare la classe ]
    }
    Sperando di essere stato chiaro ed aver centrato il problema ....


  4. #4
    Utente di HTML.it L'avatar di macse
    Registrato dal
    Dec 2002
    Messaggi
    138
    per biste

    grazie delle informazioni adesso mi studio tutto

    per maurorog

    non hai esattamente capito, nel senso che sei andato un po' più avanti, nel senso che il mio controllo DateTextBox lo avevo creato ma solo come codice all'interno del namespace del form aperto.

    Le informazioni sono interessanti, avevo provato a creare la classe DateTextBox:textbox ma mi dava degli errori, adesso forse ho capito come si fa e cosa sbagliavo.

    unica domanda:
    per creare la library come si fa? (le linee guida intendo)

    grazie Macse

  5. #5
    unica domanda:
    per creare la library come si fa? (le linee guida intendo)
    Una library e' un banalissimo progetto.
    Quindi, scegli nuovo progetto/class library da Visual studio, oppure se la vuoi includere nella tua solution, vai sulla solution, pulsante DX e scegli nuovo progetto/class library.

    Semplicissimo


  6. #6
    Utente di HTML.it L'avatar di macse
    Registrato dal
    Dec 2002
    Messaggi
    138
    ciao ancora, allora sono riuscito nel mio intento, cioè ho creato un controllo derivato da una TextBox con le proprietà e metodi che mi interessavano, e l'ho fatto in un nuovo progetto separato che quindi mi crea un file .dll, giusto?
    Adesso nel momento nel quale io andrò a portare il mio lavoro su un programma di installazione, queste DLL dovranno essere essere esportate anch'esse, oppure vengono incluse nel file eseguibile?

  7. #7
    Se importi il progetto nella tua solution principale, diventa tutto più facile al momento della creazione del file di setup.

    Prova, vedrai che è semplicissimo.

  8. #8
    Utente di HTML.it L'avatar di macse
    Registrato dal
    Dec 2002
    Messaggi
    138
    intendi all'interno delle References? Ho visto che quando compilo il progetto nella cartella BIN mi inserisce anche le DLL che ho inserito io manualmente.

    invece un programma per i setup, cosa si utilizza? possibilmente free?
    grazie
    Macse

    [PHP]-Notepad ++
    [C]-Dev-C++ 5 portable

  9. #9
    Non saprei, io uso Visual Studio 2003 e tutto l'occorrente per il setup e' gia disponibile.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2020 vBulletin Solutions, Inc. All rights reserved.