سؤال

كيف يمكنك تحديد UserControls الخاصة بك على أنها موجودة في مساحة اسم أسفل مساحة اسم المشروع، أي.[RootNameSpace].[SubSectionOfProgram].هل يتحكم؟

تحرير بسبب إجابة كامينك: لدي أيضًا قيد يتمثل في أنني يجب أن أحصل على كل التعليمات البرمجية في مشروع واحد.

تحرير لإنهاء السؤال: كما كنت أظن أنه ليس من الممكن القيام بما طلبته لذا فإن إجابة كامينك هي الحل الأقرب.

هل كانت مفيدة؟

المحلول

لست متأكدًا مما إذا كان هذا هو ما تطلبه، ولكن هذه هي الطريقة التي نقوم بها بذلك.

نقوم بمساحة الاسم لجميع مشاريعنا بطريقة متسقة، ولا تختلف عناصر تحكم المستخدم.نحن أيضًا نستخدم مساحة الاسم من خلال نافذة إعدادات المشروع، على الرغم من أنه يمكنك القيام بذلك من خلال مجموعة من نافذة المشروع وفي التعليمات البرمجية.

يحصل كل حل على مساحة اسم مثل هذا:

[CompanyName].[SolutionName].[ProjectName]

لذلك، عادةً ما تكون عناصر تحكم المستخدم لدينا في مشروع يسمى "عناصر التحكم"، والذي سيكون له مساحة اسم:

OurCompany.ThisSolution.Controls

إذا كانت لدينا عناصر تحكم قد تشمل عدة حلول مختلفة، فسنقوم فقط بتخصيص مساحة الاسم كما يلي:

OurCompany.Common.Controls

بعد ذلك، في الكود الخاص بنا سنقوم باستيراد المكتبة، أو إضافة المشروع إلى الحل.

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

نقوم أيضًا بتسمية المجلدات التي تعيش فيها المشاريع بنفس مساحة الاسم، وصولاً إلى اسم الشركة ولكن دون تضمينه (من المفترض أن تكون جميع الحلول في مساحة اسم الشركة):

\المشاريع
\المشاريع\MySolution
\المشاريع\MySolution\Controls

-- أو --

\المشاريع\
\المشاريع\المشتركة
\المشاريع\المشتركة\التجميعات
\المشاريع\المشترك\عناصر التحكم

إلخ.

امل ان يساعد...

نصائح أخرى

إذا كنت لا تريد أن تكون عناصر التحكم في مشروع منفصل، فيمكنك فقط إضافة الكلمة الأساسية لمساحة الاسم إلى أعلى ملف التعليمات البرمجية.على سبيل المثال، لقد قمت بشيء من هذا القبيل في العديد من المشاريع:

Imports System.ComponentModel

Namespace Controls
   Friend Class FloatingSearchForm

      'Your code goes here...

   End Class
End Namespace

لن تتمكن من تحديد أن عناصر التحكم موجودة في مساحة اسم جذر مختلفة عن تلك المحددة للمشروع الذي تعد جزءًا منه.سيقوم VB ببساطة بإلحاق كل ما تحدده لمساحة الاسم بمساحة الاسم المحددة في نافذة خصائص المشروع.لذا، إذا كان مشروعك بأكمله هو "AcmeCorporation.WidgetProgram" وقمت بإضافة "Namespace Controls" إلى أعلى ملف التحكم، فسيكون عنصر التحكم في مساحة الاسم "AcmeCorporation.WidgetProgram.Controls".ليس من الممكن جعل عنصر التحكم يظهر في مساحة الاسم "AcmeCorporation.SomeOtherProgram.Controls".

لاحظ أيضًا أنه إذا كنت تستخدم المصمم لتحرير عناصر التحكم الخاصة بك، فستحتاج إلى إضافة الكلمة الأساسية لمساحة الاسم إلى الفئة الجزئية المخفية التي أنشأها المصمم.انقر فوق الزر "إظهار كافة الملفات" في مستكشف الحلول، ثم انقر فوق سهم التوسيع بجوار عنصر التحكم الخاص بك.يجب أن تشاهد ملف "*.Designer.vb" مدرجًا.أضف مساحة الاسم إلى هذا الملف أيضًا.سيحترم المصمم هذا التعديل، ويجب الآن تجميع مشروعك دون أخطاء.من الواضح أن مساحة الاسم المحددة في فئة المصمم الجزئية يجب أن تكون هي نفسها المحددة في ملف صفك!بالنسبة للمثال أعلاه:

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

      'Designer generated code

   End Class
End Namespace

هل تقصد أنك تريد أن تكون قادرًا على الوصول إلى عناصر تحكم المستخدم في وقت التشغيل (في الكود) عبر

[ProjectNamespace].[YourSpecialNamespace].Controls

بدلا من الافتراضي

[ProjectNamespace].Controls

؟لأنني لا أعتقد أن ذلك ممكن.إذا لم أكن مخطئا، فإن Controls مجموعة مشروعك/تطبيقك مدمجة في إطار العمل - ولا يمكنك تغييرها.يمكنك، كما أشار كامينك، استخدام نافذة إعدادات المشروع (أو الكود) لوضع عناصر التحكم نفسها في مساحة اسم محددة على النحو التالي:

Namespace [YourSpecialNamespace]

Public Class Form1

[...]

End Class

End Namespace

بالطبع، بالتفكير في الأمر أكثر، أفترض أنه يمكنك تصميم وبناء تصميمك الخاص Controls المجموعة الموجودة في مساحة الاسم الخاصة بك - ربما كغلاف للمجموعة المضمنة ...

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top