التنبيهات التالية ظهرت :
Warning [2] count(): Parameter must be an array or an object that implements Countable - Line: 864 - File: showthread.php PHP 7.4.33 (Linux)
File Line Function
/showthread.php 864 errorHandler->error



تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
Visual Studio Extensibility: إنشاء إطار الأدوات Tool Window
#1
كيفية إنشاء Tool Window


إطارات الأدوات Tool Windows شائعة الاستخدام في بيئة Visual Studio (IDE). بعض أمثلة إطارات الأدوات المضمنة في Visual Studio هي: مستكشف الحلول Solution Explorer قائمة المهام Task List، قائمة الأخطاء Error List و إطار الإخراج Output Window . كافة إطارات الأدوات تمتلك بعض الميزات المشتركة ، على سبيل المثال، يمكن عمل Docking لكل إطار حسب الحاجة إلى ذلك, والذي يمكِّن المستخدمين من إدارة اعمالهم بسهولة ويسر.
هذا البرنامج التعليمي يلقن كيفية إنشاء إطار أدوات في IDE Visual Studio باستخدام الخطوات التالية:


  • إنشاء إطار أدوات.
  • تضمين عنصر تحكم ما في إطار الأدوات.
  • إضافة شريط أدوات ToolBar إلى إطار الأدوات.
  • إضافة أوامر Commands إلى شريط الأدوات.
  • تنفيذ الأوامر.
  • تعيين الموضع الافتراضي لإطار الأدوات.



إنشاء إطار الأدوات


في القائمة File ، أشر إلى New ومن ثم انقر فوق Project. في الجزء الأيمن، قم بتوسيع "Other Project Types" ومن ثم فوق الخاصة Extensibility. في الجزء الأيمن، انقر فوق Visual Studio Integration Package. قم بتسمية سم المشروع الخاص بك. على سبيل المثال، استخدم اسم FirstToolWin. يمكنك أيضاً إنشاء مجلد للحل. انقر فوق OK.





في صفحة الترحيب الخاصة بمعالج إنشاء Visual Studio Integration Package ، انقر فوق Next.


في الصفحة Select a Programming Language حدد Visual C# أو Visual Basic, ثم حدد الخيار Generate a new key file to sign the assembly, ثم انقر فوق Next.


لنأخذ نظرة لدراسة الصفحة Basic VSPackage Information.


  • يتم استخدام القيمة في المربع "Company Name" باعتبارها مساحة الاسم NameSpace لجميع الفئات Classes في المشروع.


  • يوفر مربع Name VSPackage اسماً للحزمة النهائية, ويقدم مربع الإصدارVersion VSPackage معلومات الإصدار.


  • يعيّن الخيار Minimum Visual Studio edition إصدارات Visual Studio الدنيا التي يجب توفرها تشغيل الحزمة عليها.


  • يوفِّر الحقل Detailed information معلومات عن الحزمة, سوف تظهر محتويات هذا الحق على صفحة خصائص الحزمة النهائية Final VSPackage.


  • يسمح لك الزر تغيير Icon… بتحديد أحد الأيقونات لتمثيل حزمة الـ VSPackage.







  • في هذا المثال, قم بالموافقة على القيم الافتراضية بالنقر على Next.

في الصفحة Select VSPackage Options, حدد كلا من: Menu Command, و Tool Window, ثم انقر فوق Next.





في الصفحة Menu Command Options, أنقر فوق التالي.


في الصفحة Tool Window Options: في الحقل Window name أكتب "Windows Media Player",






في الحقل Command ID قم بكتابة معرِّف ID معيّن, على سبيل المثال: cmdidWindowsMediaWin, ثم انقر Next.


في الصفحة Select Test Project Options قم بإلغاء تحديد كل من خانات الاختيار: Integration Test Project و Unit Test Project, ثم انقر فوق Finish.


سيتم إنشاء المشروع, ويظهر مستكشف المشاريع, انقر نقرا مزدوجاً فوق العنصر MyControl.cs أو MyControl.vb (حسب لغة المشروع).





سيتم فتح MyControl.cs في وضع التصميم بالمظهر الافتراضي التالي:





اختر الزر Click Me!, وانقر فوق مفتاح Del, ليتم حذف عنصر التحكم هذا.





تضمين عنصر تحكم ما في إطار الأدوات (عنصر التحكم Windows Media Player)


بعد ذلك قم بإضافة عنصر التحكم Windows Media Player إلى مربع الأدوات ToolBox, ثم قم بإضافته إلى إطار الأدوات الحالي.


لتضمين عنصر تحكم ما في إطار الأدوات, قم بما يلي:
في مربع ToolBox انقر بزر الماوس الأيمن فوق الموضع حيث تريد إضافة عنصر التحكم Windows Media Player على سبيل المثال، المقطع General ، ومن ثم انقر فوق "Choose Items".





في مربع الحوار " Choose Toolbox Items", انقر فوقCOM Components .


قم بالتمرير إلى Windows Media Player و حدده وانقر ثم انقر فوق OK.





سيظهر عنصر تحكم Windows Media Player في مربع الأدوات ToolBox.





لإضافة عنصر التحكم Media Player إلى إطار الأدوات الخاص بك اسحب عنصر التحكم Media Player من مربع الأدوات إلى النموذج MyControl.cs. تلاحظ أنها تظهر صغيرة كما هو مبيّن في التوضيح التالي.



قم بتحديد عنصر التحكم الذي قمت بإضافته, في إطار الخصائص Properties Window, قم بتعيين الخاصية Dock إلى Fill (المربع الأوسط)
في القائمة File, انقر فوق "حفظ الكل" Save All.


إضافة شريط أدوات ToolBar إلى إطار الأدوات.


بواسطة إضافة شريط أدوات بالطريقة التالية, يمكنك أن تضمن أن التدرجات والألوان تكون متسقة مع التدرجات الألوان الخاصة بـ Visual Studio


1. في "مستكشف الحلول" افتح FirstToolWin.vsct. يقوم ملف .vsct بتعريف عناصر واجهة المستخدم الرسومية (GUI) في إطار الأدوات الخاص بك باستخدام XML.


2. في القسم <Symbols>, ابحث عن التفرع <GuidSymbol> والذي يمتلك السمة ( name Attribute ) ذات القيمة guidFirstToolWinCmdSet.


قم بإضافة العنصرين التاليين من النوع <IDSymbol> إلى قائمة عناصر <IDSymbol> في هذا التفرع من أجل تعريف شريط الأدوات toolBar, ومجموعة الأدوات toolBar group.


كود :
<IDSymbol name="ToolbarID" value="0x1000" />
<IDSymbol name="ToolbarGroupID" value="0x1001" />


3. مباشرة فوق القسم <Groups> بإنشاء تفرع جديد فارغ باسم <Menus>.
4. في القسم <Menus> قم بإنشاء عنصر <Menu> التالي لتعريف شريط الأدوات الذي أعلنت عنه في الخطوة 2.


كود :
<Menus>
  <Menu guid="guidFirstToolWinCmdSet" id="ToolbarID"
        priority="0x0000" type="ToolWindowToolbar">
    <Parent guid="guidFirstToolWinCmdSet" id="ToolbarID" />
    <Strings>
      <ButtonText>Tool Window Toolbar</ButtonText>
      <CommandName>Tool Window Toolbar</CommandName>
    </Strings>
  </Menu>
</Menus>


5. أشرطة الأدوات تشبه القوائم في أوجه كثيرة. على سبيل المثال، مثلما قد يكون للقائمة مجموعات من الأوامر يمكن لأشرطة الأدوات كذلك أن تحتوي على مجموعات. (في قوائم Menus مجموعات الأوامر تكون مفصولة عت طريق خطوط أفقية Horizontal lines. وفي أشرطة الأدوات المجموعات لا تكون مفصولة بمقسمات مرئية.)
إضافة عنصر <Group> جديد إلى القسم <Groups> لتعريف المجموعة التي أعلنت عنها في التفرع <Symbols>.


كود :
<Group guid="guidFirstToolWinCmdSet" id="ToolbarGroupID"
       priority="0x0000">
  <Parent guid="guidFirstToolWinCmdSet" id="ToolbarID"/>
</Group>


6. احفظ الملف


إضافة أوامر Commands إلى شريط الأدوات.


بعد ذلك سنقوم بإضافة أوامر إلى شريط الأدوات الذي قمنا بإنشائه. وسيتم عرض الأوامر كـالأزرار وعناصر التحكم.
في FirstToolWin.vsct ، في التفرع <Symbols> ، فم بالإعلان عن أربعة أوامر بعد الإعلان عن شريط الأدوات وشريط الأدوات.


كود :
<IDSymbol name="cmdidWindowsMedia" value="0x130" />
<IDSymbol name="cmdidWindowsMediaOpen" value="0x132" />
<IDSymbol name="cmdidWindowsMediaFilename" value="0x133" />
<IDSymbol name="cmdidWindowsMediaFilenameGetList" value="0x134" />


لاحظ أن الأمر cmdidWindowsMediaWin أعلن بالفعل من قِبل Visual Studio .
في المقطع <Buttons> لاحظ وجود عنصر <Button> موجود بالفعل ويحتوي على تعريف للأمر cmdidWindowsMediaWin. إضافة اثنين آخرين من<Button> التي تعرّف الأوامر cmdidWindowsMedia و cmdidWindowsMediaOpen.


كود :
<Button guid="guidFirstToolWinCmdSet"
        id="cmdidWindowsMedia" priority="0x0100"
        type="Button">
  <Parent guid="guidFirstToolWinCmdSet" id="MyMenuGroup"/>
  <Icon guid="guidImages" id="bmpPic1" />
  <Strings>
    <CommandName>cmdidWindowsMedia</CommandName>
    <ButtonText>WindowsMedia</ButtonText>
  </Strings>
</Button>
<Button guid="guidFirstToolWinCmdSet"
        id="cmdidWindowsMediaOpen" priority="0x0101"
        type="Button">
  <Parent guid="guidFirstToolWinCmdSet"
          id="ToolbarGroupID"/>
  <Icon guid="guidImages" id="bmpPic1" />
  <Strings>
    <CommandName>cmdidWindowsMediaOpen</CommandName>
    <ButtonText>Load File</ButtonText>
  </Strings>
</Button


لاحظ أن أولوية الزر الثاني هي 0x0101. وأداة ComboBox الذي ستتم إضافته في الخطوة التالية لها أولوية 0x0100. لذلك، ستظهر ComboBox في الموقع الأول كما سيظهر الزر الموقع الثاني.
لتوفير موقع ما من أجل يقوم المستخدم بكتابة نص ما, قم بإضافة ComboBox, إضافة Combo Box أشبه كثيرا بإضافة Button, فقط قم باستبدال <Buttons> بـ <Combos>.
إنشئ <Combos> مباشرة بعد العلامة </Buttons> مع مدخل واحد لتعريف الـ ComboBox.




كود :
<Combos>
  <Combo guid="guidFirstToolWinCmdSet"
         id="cmdidWindowsMediaFilename"
         priority="0x0100" type="DynamicCombo"
         idCommandList="cmdidWindowsMediaFilenameGetList"
         defaultWidth="130">
    <Parent guid="guidFirstToolWinCmdSet"
            id="ToolbarGroupID" />
    <CommandFlag>IconAndText</CommandFlag>
    <CommandFlag>CommandWellOnly</CommandFlag>
    <CommandFlag>StretchHorizontally</CommandFlag>
    <Strings>
      <CommandName>Filename</CommandName>
      <ButtonText>Enter a Filename</ButtonText>
    </Strings>
  </Combo>
</Combos>


قم بحفظ وإغلاق ما قمت به
في مستكشف الحلول, وفي مجلد المشروع, حدّد وافتح الملف PkgCmdID.cs ثم أضف الأسطر التالية :


كود :
public const uint cmdidWindowsMedia = 0x130;
public const int cmdidWindowsMediaOpen = 0x132;
public const int cmdidWindowsMediaFilename = 0x133;
public const int cmdidWindowsMediaFilenameGetList = 0x134;
public const int ToolbarID = 0x1000;


احفظ وأغلق الملف.


تنفيذ الأوامر.


والآن سنقوم بكتابة الأكواد التي ستقوم بتنفيذ الأوامر.
في مستكشف المشاريع, افتح الملف MyToolWindow.cs والذي يحتوي على فئة إطار الأدوات نفسه, وقم بإضافة هذا السطر:


كود :
using System.ComponentModel.Design;


أضف التالي قبل السطر control = new MyControl()


كود :
// Create the toolbar.
this.ToolBar = new CommandID(GuidList.guidFirstToolWinCmdSet,
    PkgCmdIDList.ToolbarID);
this.ToolBarLocation = (int)VSTWT_LOCATION.VSTWT_TOP;


// Create the handlers for the toolbar commands.
var mcs = GetService(typeof(IMenuCommandService))
    as OleMenuCommandService;
if (null != mcs)
{
    var toolbarbtnCmdID = new CommandID(
        GuidList.guidFirstToolWinCmdSet,
        PkgCmdIDList.cmdidWindowsMediaOpen);
    var menuItem = new MenuCommand(new EventHandler(
        ButtonHandler), toolbarbtnCmdID);
    mcs.AddCommand(menuItem);


    // Command for the combo itself
    var menuMyDynamicComboCommandID = new CommandID(
        GuidList.guidFirstToolWinCmdSet,
        (int)PkgCmdIDList.cmdidWindowsMediaFilename);
    var menuMyDynamicComboCommand = new OleMenuCommand(
        new EventHandler(ComboHandler),
        menuMyDynamicComboCommandID);
    mcs.AddCommand(menuMyDynamicComboCommand);


    // Command for the combo's list
    var comboListCmdID = new CommandID(
        GuidList.guidFirstToolWinCmdSet,
        PkgCmdIDList.cmdidWindowsMediaFilenameGetList);
    var comboMenuList = new OleMenuCommand(
        new EventHandler(ComboListHandler), comboListCmdID);
    mcs.AddCommand(comboMenuList);
}


هذه الأكواد تضيف ثلاثة أوامر, واحدة للزر واثنتين لأداة ComboBox, بالنسبة لأداة ComboBox, واحدة عند إدخال المستخدم لنص ما, والثانية لملئ القائمة المنسدلة Dropdown List.
في مستكشف الحلول, انقر بزر الماوس الأيمن فوق الملف MyControl.cs وانقر فوق View Code, أضف الأسلوب التالي إلى الملف:


كود :
public AxWMPLib.AxWindowsMediaPlayer MediaPlayer
{
    get { return axWindowsMediaPlayer1; }
}


احفظ وأغلق MyControl.cs
عد إلى MyToolWindow.cs وأضف الأسطر التالية إلى ما قبل نهاية الفئة


كود :
private void ButtonHandler(object sender,
    EventArgs arguments)
{
    if (comboValue != null && comboValue.Trim().Length != 0)
    {
        LoadFile(comboValue);
    }
}


private void ComboHandler(object sender, EventArgs arguments)
{
    var eventArgs = arguments as OleMenuCmdEventArgs;
    if (eventArgs != null)
    {
        IntPtr output = eventArgs.OutValue;
        object input = eventArgs.InValue;
        if (input != null)
        {
            comboValue = input.ToString();
        }
        else if (output != IntPtr.Zero)
        {
            Marshal.GetNativeVariantForObject(comboValue,
                output);
        }
    }
}


public void LoadFile(string comboValue)
{
    control.MediaPlayer.URL = comboValue;
}


private void ComboListHandler(object sender,
    EventArgs arguments)
{
}


يقوم Combo Handler بحفظ أية قيمة يقوم المستخدم بإدخالها في متغير, لإضافة هذا المتغير أضف السطر التالي:


كود :
string comboValue = "";


عند النقر فوق الزر, سيقوم هذا الزر بقراءة قيمة هذا المتغير المحلي ويقوم بتحميله في Media Player.


تعيين الموضع الافتراضي لإطار الأدوات


يمكن تعيين الموضع الافتراضي لإطار الأدوات من خلال الملف FirstToolWinPackage.cs, في الملف FirstToolWinPackage.cs ابحث عن السطر التالي:


كود :
[ProvideToolWindow(typeof(MyToolWindow))]


حيث ProvideToolWindow عبارة عن فئة مشتقة من الفئة Attribute
استبدل السطر السابق بعد إيجاده


كود :
[ProvideToolWindow(typeof(MyToolWindow),
    Style = Microsoft.VisualStudio.Shell.VsDockStyle.Tabbed,
    Window = "3ae79031-e1bc-11d0-8f78-00a0c9110057")]


احفظ وأغلق الملف.


تجربة الإطار


أنقر فوق F5, سيقوم Visual Studio بفتح نسخة جديدة من Experimental hive
أنقر فوق View, حدد Other Windows, ستجد بند جديد اسمه Windows Media Player.
سيتم فتح إطار الأدوات تماما كمستكشف الحلول.
في الأداة ComboBox الخاصة بالإطار الجديد أكتب المسار التالي:
c:\windows\media\chimes.wav واضغط Enter.




انتهى


قريبا سأرفق مثالا كاملا عن هذه الخطوات اعذرني لأني مشغول بعملي.
الرد }}}
تم الشكر بواسطة:


الردود في هذا الموضوع
Visual Studio Extensibility: إنشاء إطار الأدوات Tool Window - بواسطة Islam Ibrahim - 17-09-12, 01:06 PM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  حصرياً جميع روابط Microsoft Visual Studio.Net مباشرة وشغالة 100% من شركة Microsoft أسامة أحمد 11 23,690 14-01-24, 10:55 AM
آخر رد: سعيدة نبيل
  تحميل برنامج مايروسوفت فيجوال بيسك Download Microsoft Visual Basic mohamed atef2018 2 5,144 09-07-16, 10:58 PM
آخر رد: عمور2016
  مجموعة من الأدوات المجانية والمفتوحة المصدر ali.alfoly 8 4,731 28-08-13, 12:05 AM
آخر رد: Riad Soft
  الفوارق الأشيع بين لغات .net الأربع (C#- Visual basic - C++-CLI- F#) RaggiTech 0 4,204 27-10-12, 04:20 PM
آخر رد: RaggiTech
  زمن المعالجات - Microsoft Visual Studio LightSwitch RaggiTech 0 2,633 09-10-12, 06:27 PM
آخر رد: RaggiTech
  مدخل إلى Visual Studio Extensibility باستخدام Visual Studio SDK RaggiTech 0 2,450 09-10-12, 05:05 PM
آخر رد: RaggiTech
  معلومة- كيف تحسن أداء XMLSerializer باستخدام SGen.exe Tool RaggiTech 0 1,917 09-10-12, 11:48 AM
آخر رد: RaggiTech
  مقال تقني- Windows Vista وVisual Studio RaggiTech 0 2,298 09-10-12, 11:46 AM
آخر رد: RaggiTech
  نظرة سريعة في الجديد في Visual Studio 2008 فيما يتعلق ببيئة التطوير RaggiTech 0 1,880 08-10-12, 05:45 PM
آخر رد: RaggiTech
  إنشاء قالب مشروع جديد في visual studio RaggiTech 0 2,209 08-10-12, 01:00 PM
آخر رد: RaggiTech

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم