Domanda

Come definisci i tuoi UserControls come se si trovassero in uno spazio dei nomi sotto lo spazio dei nomi del progetto, ad es.[RootNameSpace].[SubSectionOfProgram].Controlli?

Modifica a causa della risposta di camainc: Ho anche un vincolo che devo avere tutto il codice in un unico progetto.

Modifica per finalizzare la domanda: Come sospettavo, non è possibile fare ciò di cui avevo bisogno, quindi la risposta di camainc è la soluzione più vicina.

È stato utile?

Soluzione

Non sono sicuro che sia questo ciò che chiedi, ma è così che lo facciamo.

Diamo uno spazio ai nomi a tutti i nostri progetti in modo coerente, i controlli utente non sono diversi.Utilizziamo anche lo spazio dei nomi utilizzando la finestra delle impostazioni del progetto, sebbene sia possibile farlo tramite una combinazione della finestra del progetto e nel codice.

Ogni soluzione ottiene uno spazio dei nomi come questo:

[CompanyName].[SolutionName].[ProjectName]

Quindi, i nostri controlli utente si trovano normalmente in un progetto chiamato "Controls", che avrebbe uno spazio dei nomi di:

OurCompany.ThisSolution.Controls

Se disponiamo di controlli che potrebbero estendersi a diverse soluzioni diverse, lo spaziamo semplicemente nei nomi in questo modo:

OurCompany.Common.Controls

Quindi, nel nostro codice importeremo la libreria o aggiungeremo il progetto alla soluzione.

Imports OurCompany
Imports OurCompany.Common
Imports OurCompany.Common.Controls

Diamo anche un nome alle cartelle in cui risiedono i progetti come allo spazio dei nomi, fino al nome dell'azienda escluso (si presuppone che tutte le soluzioni si trovino nello spazio dei nomi dell'azienda):

\Progetti
\Progetti\MySolution
\Progetti\MySolution\Controlli

-- O --

\Progetti\
\Progetti\Comune
\Progetti\Comuni\Assiemi
\Progetti\Comuni\Controlli

eccetera.

Spero che aiuti...

Altri suggerimenti

Se non vuoi che i controlli si trovino in un progetto separato, puoi semplicemente aggiungere la parola chiave Namespace all'inizio del file di codice.Ad esempio, ho fatto qualcosa del genere in diversi progetti:

Imports System.ComponentModel

Namespace Controls
   Friend Class FloatingSearchForm

      'Your code goes here...

   End Class
End Namespace

Non sarai in grado di specificare che i controlli si trovano in uno spazio dei nomi root diverso da quello specificato per il progetto di cui fanno parte.VB aggiungerà semplicemente tutto ciò che specifichi per lo spazio dei nomi allo spazio dei nomi specificato nella finestra delle proprietà del progetto.Pertanto, se l'intero progetto è "AcmeCorporation.WidgetProgram" e aggiungi "Controlli dello spazio dei nomi" all'inizio di un file di controllo, il controllo si troverà nello spazio dei nomi "AcmeCorporation.WidgetProgram.Controls".Non è possibile far apparire il controllo nello spazio dei nomi "AcmeCorporation.SomeOtherProgram.Controls".

Tieni inoltre presente che se stai utilizzando la finestra di progettazione per modificare i controlli, devi aggiungere la parola chiave Namespace alla classe parziale nascosta creata dalla finestra di progettazione.Fai clic sul pulsante "Mostra tutti i file" in Esplora soluzioni, quindi fai clic sulla freccia di espansione accanto al tuo controllo.Dovresti vedere un file "*.Designer.vb" elencato.Aggiungi anche lo spazio dei nomi a quel file.Il progettista rispetterà questa modifica e il tuo progetto ora dovrebbe essere compilato senza errori.Ovviamente, lo spazio dei nomi specificato nella classe parziale del designer deve essere lo stesso specificato nel file della classe!Per l'esempio sopra:

Namespace Controls
   <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
   Partial Class FloatingSearchForm

      'Designer generated code

   End Class
End Namespace

Vuoi dire che vuoi poter accedere ai controlli utente in fase di runtime (nel codice) tramite

[ProjectNamespace].[YourSpecialNamespace].Controls

piuttosto che il valore predefinito di

[ProjectNamespace].Controls

?Perché non credo che sia possibile.Se non sbaglio, il Controls la raccolta del tuo progetto/app è integrata nel framework: non puoi modificarla.Puoi, come notato da camainc, utilizzare la finestra delle impostazioni del progetto (o il codice) per posizionare i controlli stessi in uno spazio dei nomi specifico in questo modo:

Namespace [YourSpecialNamespace]

Public Class Form1

[...]

End Class

End Namespace

Naturalmente, riflettendoci ancora un po', suppongo che potresti progettare e costruire il tuo Controls raccolta nel tuo spazio dei nomi, magari come wrapper per quello integrato...

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