Aggiunta nuovo controllo nella Casella degli Strumenti

di il
12 risposte

Aggiunta nuovo controllo nella Casella degli Strumenti

Buongiorno a tutti. Ho creato un semplice controllo, un DGV che permette di spostarsi tra le celle con il tasto invio, che però non riesco ad includere nel progetto. Quando provo ad inserirlo nella casella degli strumenti, mi da il seguente errore: "Controllo.dll non contiene componenti che possano essere inseriti nella casella degli strumenti".

Nel ricercare l'errore, ho anche convertito il codice in VB.net, ed in VB.net il controllo viene aggiunto regolarmente nel progetto.

Dove sto sbagliando ? Grazie

12 Risposte

  • Re: Aggiunta nuovo controllo nella Casella degli Strumenti

    Orlando1970 ha scritto:


    Dove sto sbagliando ? Grazie
    Senza vedere il codice, sarà più difficile fare delle ipotesi.
  • Re: Aggiunta nuovo controllo nella Casella degli Strumenti

    Questo è il codice incriminato, ripeto, nella versione vb funziona regolarmente, nella versione c# pare manchi qualcosa.
    using System.Windows.Forms;
    
    namespace MyControls
    {
        public class MyDataGridView : DataGridView
        {
    
            [System.Security.Permissions.UIPermission(System.Security.Permissions.SecurityAction.LinkDemand, Window = System.Security.Permissions.UIPermissionWindow.AllWindows)]
            protected override bool ProcessDialogKey(Keys keyData)
            {
                if (keyData == Keys.Enter)
                {
                    // Return Me.ProcessRightKey(keyData)
                    return ProcessTabKey(keyData);
                    // Return False
                }
                return base.ProcessDialogKey(keyData);
            }
    
            [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.LinkDemand, Flags = System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)]
            protected override bool ProcessDataGridViewKey(KeyEventArgs e)
            {
                // Handle the ENTER key as if it were a TAB key. 
                if (e.KeyCode == Keys.Enter)
                {
                    // Return Me.ProcessRightKey(e.KeyData)
                    return ProcessTabKey(e.KeyData);
                    // Return False
                }
                return base.ProcessDataGridViewKey(e);
            }
        }
    }
  • Re: Aggiunta nuovo controllo nella Casella degli Strumenti

    Leggendo qua e là, l'unica raccomandazione che viene fatta è quella di trovarsi nella scheda .NET Framework Components quando si va a scegliere la DLL, perché per qualche motivo una scheda differente (es. COM Components) pare che impedisca di trovare controlli all'interno della libreria.

    Ritenta con questo accorgimento e sarai più fortunato (forse).
  • Re: Aggiunta nuovo controllo nella Casella degli Strumenti

    Alka ha scritto:


    Leggendo qua e là, l'unica raccomandazione che viene fatta è quella di trovarsi nella scheda .NET Framework Components quando si va a scegliere la DLL, perché per qualche motivo una scheda differente (es. COM Components) pare che impedisca di trovare controlli all'interno della libreria.

    Ritenta con questo accorgimento e sarai più fortunato (forse).
    Purtroppo non è questo il problema
  • Re: Aggiunta nuovo controllo nella Casella degli Strumenti

    Un piccolo aggiornamento, se il controllo l'ho sposto sul desktop funziona
  • Re: Aggiunta nuovo controllo nella Casella degli Strumenti

    Orlando1970 ha scritto:


    Un piccolo aggiornamento, se il controllo l'ho sposto sul desktop funziona
    Sposti un controllo sul desktop? In che senso!?!

    A mio avviso, se davvero vuoi risolvere il problema, o indichi tutti i dettagli della procedura che esegui per tentare di aggiungere quel nuovo controllo nella Toolbox usando anche i termini tecnici corretti, o non si cava un ragno dal buco perché è impossibile capire quello che stai facendo, e dai feedback che fornisci mi vengono forti sospetti che sia il procedimento corretto.
  • Re: Aggiunta nuovo controllo nella Casella degli Strumenti

    Alka ha scritto:


    Orlando1970 ha scritto:


    Un piccolo aggiornamento, se il controllo l'ho sposto sul desktop funziona
    Sposti un controllo sul desktop? In che senso!?!

    A mio avviso, se davvero vuoi risolvere il problema, o indichi tutti i dettagli della procedura che esegui per tentare di aggiungere quel nuovo controllo nella Toolbox usando anche i termini tecnici corretti, o non si cava un ragno dal buco perché è impossibile capire quello che stai facendo, e dai feedback che fornisci mi vengono forti sospetti che sia il procedimento corretto.
    Ciao Alka ti rispondo subito.
    Creo una nuova libreria di classi (c#, Framework 4.
    Scrivo la class così come mostrata nei post precedenti
    Salvo e compilo la stessa, ovviamente in questa fase non mi da alcun errore.
    Apro l'applicazione che sto sviluppando
    Aggiungo la dll appena creata tra i riferimenti
    Aggiungo un nuovo elemento nella toolbox ed in questa fase mi genera l'errore di cui parlo ovvero che l'elemento letto (dll) non ha componenti da aggiungere nella toolbox.

    Quando la dll viene generata sta all'interno di una cartella sul desktop e non funziona, se la copio e la incollo sul desktop questa mi si carica tranquillamente e funziona non generando quindi l'errore di cui sopra.
  • Re: Aggiunta nuovo controllo nella Casella degli Strumenti

    Orlando1970 ha scritto:


    Aggiungo la dll appena creata tra i riferimenti
    Non è necessario, anzi lo eviterei, perché mi aspetterei ciò avvenga in automatico una volta trascinato il controllo dalla Toolbox.

    Orlando1970 ha scritto:


    Aggiungo un nuovo elemento nella toolbox ed in questa fase mi genera l'errore di cui parlo ovvero che l'elemento letto (dll) non ha componenti da aggiungere nella toolbox.
    Dipende da come lo aggiungi. E inoltre, la DLL da quale percorso viene preso?
    Non è che stai aggiungendo all'ambiente la DLL della cartella "Debug" che ottieni dalla compilazione dello stesso progetto che hai aperto?

    Orlando1970 ha scritto:


    Quando la dll viene generata sta all'interno di una cartella sul desktop e non funziona, se la copio e la incollo sul desktop questa mi si carica tranquillamente e funziona non generando quindi l'errore di cui sopra.
    Appunto. Sbagli senz'altro un passaggio nella parte sopra, ma non potendo vedere nel dettaglio (e non trovandolo nel post) le operazioni che vengono eseguite con precisione, non si può dire nulla di più specifico.
  • Re: Aggiunta nuovo controllo nella Casella degli Strumenti

    Alka ha scritto:


    Orlando1970 ha scritto:


    Aggiungo la dll appena creata tra i riferimenti

    Non è necessario, anzi lo eviterei, perché mi aspetterei ciò avvenga in automatico una volta trascinato il controllo dalla Toolbox.
    Non l'ho fa in automatico.

    Orlando1970 ha scritto:


    Aggiungo un nuovo elemento nella toolbox ed in questa fase mi genera l'errore di cui parlo ovvero che l'elemento letto (dll) non ha componenti da aggiungere nella toolbox.

    Dipende da come lo aggiungi. E inoltre, la DLL da quale percorso viene preso?
    Non è che stai aggiungendo all'ambiente la DLL della cartella "Debug" che ottieni dalla compilazione dello stesso progetto che hai aperto?
    Dipende da come lo aggiungi
    Tasto dx del mouse "Scegli elementi", se invece trascino direttamente la dll col mouse non mi genera nessun errore nel senso che questa viene aggiunta alla toolbox senza problemi qualsiasi è il percorso da dove la prendo solo che quando vado ad eseguire il progetto mi va in errore "InitializeComponent", "Eccezione non Gestita"
    la DLL da quale percorso viene preso?
    Non è che stai aggiungendo all'ambiente la DLL della cartella "Debug" che ottieni dalla compilazione dello stesso progetto che hai aperto?
    il percorso è il seguente "...\MyControls\MyControls\bin\Debug" e sono due progetto separati, uno per la creazione di librerie ed una è il progetto che sto portando avanti.

    Orlando1970 ha scritto:


    Quando la dll viene generata sta all'interno di una cartella sul desktop e non funziona, se la copio e la incollo sul desktop questa mi si carica tranquillamente e funziona non generando quindi l'errore di cui sopra.
    Appunto. Sbagli senz'altro un passaggio nella parte sopra, ma non potendo vedere nel dettaglio (e non trovandolo nel post) le operazioni che vengono eseguite con precisione, non si può dire nulla di più specifico.
    non credo ci siano ulteriori passaggi che faccio e che non ti ho menzionato, in ogni caso mi sono scaricato da sito codeproject la seguente applicazione "ZeeUIUtility" in modo da scartare eventuali miei errori di realizzazione e praticamente si comporto allo stesso modo ovvero nella cartella download funziona, sul desktop funziona, se lo aggiungo in una cartella presente sul desktop non funziona più.
    Spero mi possiate aiutare, grazie
  • Re: Aggiunta nuovo controllo nella Casella degli Strumenti

    Smanettando ovvero rifacendo passo passo tutto il progetto pare che l'errore si manifesta se cambio in un secondo momento il nome dell'assembly nelle proprietà dello stesso. Ora il progetto è piccolo e posso tranquillamente rifarlo, ma se fosse stato piuù ampio possibile che non si possa rinominare l'assemby ?
  • Re: Aggiunta nuovo controllo nella Casella degli Strumenti

    Orlando1970 ha scritto:


    Smanettando ovvero rifacendo passo passo tutto il progetto pare che l'errore si manifesta se cambio in un secondo momento il nome dell'assembly nelle proprietà dello stesso. Ora il progetto è piccolo e posso tranquillamente rifarlo, ma se fosse stato piuù ampio possibile che non si possa rinominare l'assemby ?
    Onestamente, dai feedback che hai dato io ho avuto l'impressione che sia del tutto impossibile capire il procedimento che hai usato, e che quindi ti si dovrebbe seguire direttamente mentre fai l'operazione, sapere dove sono tutti i file, conoscere le caratteristiche in dettaglio del progetto, ecc. ecc., tutte cose che richiederebbero un accesso diretto alla macchina e un affiancamento "sul momento" da remoto, che in un forum non si possono fare.

    Questa sensazione mi è stata confermata a maggior ragione dal tuo intervento successivo, che inizia appunto con "Smanettando...".

    Prima i tentativi con diversi linguaggi, poi i sorgenti sul desktop o altrove, poi i cambi di nome e tutto il resto... sono troppe le variabili che vengono alterate nello stesso momento per poter dire: "ecco, il problema è esattamente quella cosa lì".

    Per tutti i motivi indicati sopra, ahimé non saprei che dirti di nuovo a riguardo.
  • Re: Aggiunta nuovo controllo nella Casella degli Strumenti

    Alka ha scritto:


    Orlando1970 ha scritto:


    Smanettando ovvero rifacendo passo passo tutto il progetto pare che l'errore si manifesta se cambio in un secondo momento il nome dell'assembly nelle proprietà dello stesso. Ora il progetto è piccolo e posso tranquillamente rifarlo, ma se fosse stato piuù ampio possibile che non si possa rinominare l'assemby ?
    Onestamente, dai feedback che hai dato io ho avuto l'impressione che sia del tutto impossibile capire il procedimento che hai usato, e che quindi ti si dovrebbe seguire direttamente mentre fai l'operazione, sapere dove sono tutti i file, conoscere le caratteristiche in dettaglio del progetto, ecc. ecc., tutte cose che richiederebbero un accesso diretto alla macchina e un affiancamento "sul momento" da remoto, che in un forum non si possono fare.

    Questa sensazione mi è stata confermata a maggior ragione dal tuo intervento successivo, che inizia appunto con "Smanettando...".

    Prima i tentativi con diversi linguaggi, poi i sorgenti sul desktop o altrove, poi i cambi di nome e tutto il resto... sono troppe le variabili che vengono alterate nello stesso momento per poter dire: "ecco, il problema è esattamente quella cosa lì".

    Per tutti i motivi indicati sopra, ahimé non saprei che dirti di nuovo a riguardo.
    Alka perdonami ma tutti i feedback che oggettivamente oggi rileggendoli potrebbero creare confusione sono stati inviati unicamente nel tentativo che qualcuno del gruppo riuscisse a darmi una mano.

    Ti chiedo pertanto un piccolo sforzo nel testare direttamente il problema che alla fine pare si riduca al cambio nome dell'assembly nelle proprietà del progetto. Se da A lo chiamo B il relativo DLL che creo (compilando la soluzione) non funziona più, se lo richiamo nuovamente A funziona di nuovo, quindi il problema è tutto li.

    Poichè mi sembra impossibile che sto benedetto nome non possa essere variato, immagino mi manchi qualche passaggio.

    Il tutto perchè ho avuto l'esigenza di variare il nome del progetto con il quale genero le mie DLL da MyControl ad Action
Devi accedere o registrarti per scrivere nel forum
12 risposte