Domanda

ho scritto un discendente UserControl che è in una DLL di assembly.

Come posso rilasciare il controllo su un modulo?

namespace StackOverflowExample
{
   public partial class MonthViewCalendar : UserControl
   {
      ...
   }
}

Ho aggiunto un riferimento all'assembly nel nodo Riferimenti in Esplora soluzioni , ma nessun nuovo controllo è stato visualizzato nella mia Casella degli strumenti .

Come faccio a visualizzare il controllo nella Casella degli strumenti in modo da poterlo rilasciare in un modulo?


Aggiornamento 1 :

Ho provato a costruire l'assemblaggio mentre l'opzione Visual Studio:

Strumenti - > Opzioni ... - > Windows Forms Designer - > AutoToolboxPopulate = true

Il controllo non è stato visualizzato nella casella degli strumenti in una nuova soluzione.

Nota: in qualche modo ho erroneamente scritto " ... cioè non in una assemblea dll ... " ;. non so come sono riuscito a scriverlo, quando in particolare è in una DLL di assembly. I controlli sono apparsi magicamente quando si trovano nello stesso progetto, ma non ora che si tratta di un progetto / soluzione diversa.


Aggiornamento 2: risposta

  1. Fai clic con il pulsante destro del mouse su Toolbox
  2. Seleziona Scegli elementi ...
  3. Componenti .NET Framework
  4. Seleziona Sfoglia ...
  5. Cerca il assembly dll che contiene il controllo e seleziona Apri

    Nota: i controlli nell'assieme verranno aggiunti silenziosamente all'elenco dei componenti .NET Framework.

  6. Seleziona ciascuno dei controlli che desideri visualizzare nella casella degli strumenti
  7. Seleziona OK
È stato utile?

Soluzione

Normalmente, quando costruisci il tuo progetto, il tuo controllo utente apparirà nella tua casella degli strumenti in alto. Normalmente, vedrai un nuovo riquadro con ciascuno dei tuoi Assiemi e i controlli lì dentro.

Se ciò non accade, puoi anche aggiungere il controllo facendo clic con il pulsante destro del mouse sulla casella degli strumenti, selezionando Scegli elementi , quindi in Componenti .NET Framework cercando il tuo assembly, aggiungendolo, quindi assicurati che il controllo sia selezionato.

Altri suggerimenti

Quello che noto è che i controlli utente e i componenti vengono aggiunti automaticamente alla Casella degli strumenti solo da vs2005 quando il progetto (contenente i controlli / componenti) si trova nella stessa cartella della soluzione. Quando questo progetto si trova in una sottocartella vs2005 non aggiungerà i controlli e i componenti nella Casella degli strumenti.

Mi sono imbattuto in alcuni problemi con questo. Alla fine, solo la ricostruzione e il nuovo riferimento funzioneranno. Avevo preferito ereditare da UserControl. Mi ha semplificato la vita;)

Se ad esempio vuoi creare un "bordo arrotondato" etichetta, fai qualcosa del genere:

using System;
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Windows.Forms;

namespace YourUIControls
{
    [DefaultProperty("TextString")]
    [DefaultEvent("TextClick")]
    public partial class RoundedLabel : UserControl
    {
         public RoundedLabel()
         {
             InitializeComponent();
         }
         protected override void OnPaint(PaintEventArgs e)
         {
             //Draw your label here…
         }
     }
}

Compila e aggiungi un riferimento all'output. Potrai trascinarlo nella casella degli strumenti e successivamente in Designer.

Devi creare il progetto contenente il controllo che hai creato e assicurarti che le tue opzioni siano impostate per la ricostruzione di Toolbox. Se non lo hai modificato dai valori predefiniti, dovrebbe funzionare; altrimenti, vai su Strumenti - > Opzioni ... e seleziona il gruppo Progettazione Windows Form. Assicurati che l'opzione AutoToolboxPopulate sia impostata su true .

Non è necessario il ToolboxItemAttribute perché funzioni. Se l'assembly di fornitura si trova nella stessa soluzione dell'assembly di consumo, dovrebbe apparire nella casella degli strumenti. Se l'assembly di fornitura non fa parte della soluzione, è possibile aggiungere manualmente l'assemblaggio alla casella degli strumenti selezionando ** Scegli elementi ... * dal menu di scelta rapida della casella degli strumenti e aggiungendo direttamente l'assieme. Se vuoi che gli strumenti li raccolgano automaticamente, dovrai usare ToolboxItemAttribute .

Aggiungi l'attributo Toolbox alla tua classe.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top