إنشاء قائمة منسدلة لشخصيات Microsoft Agent

This article is available in English too, check it out here.

كنا قد تكلمنا سابقا عن كيفية التعامل مع شخصيات Microsoft Agent في برنامجك، ولكننا قد أهملنا الكلام عن كيفية تغيير القائمة المنسدلة الأساسية الخاصة بالشخصية والتي لا تحوي سوى عنصر واحد فقط وهو Hide لإخفاء الشخصية. وأتوقع أنكم مستائين منها كثيرا (مثلا تماما.)

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

أولا، قم بفتح مشروعك الذي يستخدم هذه التقنية. وفي المشروع قم بإنشاء القائمة المنسدلة التي تريدها باستخدام الأداة System.Windows.Forms.ContextMenuStrip. قم بإضافة العناصر التي تريدها إلى القائمة وكتابة الأكواد الخاصة بهذه العناصر.

الآن، إلى عملية الربط. اذهب إلى الكود الذي يقوم بتحميل الشخصية من الملف الخاص بها وقم بإلغاء القائمة الأساسية عن طريق تحديد الخاصية AutoPopupMenu الخاصة بعنصر الشخصية لتصبح False. لاحظ الكود التالي:

    // C# Code
    AxAgentObjects.AxAgent agentCtl;
    AgentObjects.IAgentCtlCharacterEx agentChar;
    // initializing 'agentCtl'
    // . . .
    agentCtl.Characters.Load("Merlin", "merlin.acs");
    agentChar = agentCtl.Characters.Character("Merlin");
    agentChar.AutoPopupMenu = false;
    ' VB.NET Code
    Dim agentCtl As AxAgentObjects.AxAgent
    Dim agentChar As AgentObjects.IAgentCtlCharacterEx
    ' initializing 'agentCtl'
    ' . . .
    agentCtl.Characters.Load("Merlin", "merlin.acs")
    agentChar = agentCtl.Characters.Character("Merlin")
    agentChar.AutoPopupMenu = False

إلى الآن، قمنا بإلغاء استخدام القائمة الأساسية فقط. الآن ننتقل إلى النقطة الأكثر إثارة، وهي ربط القائمة الجديدة بالشخصية. يمكنك ذلك عن طريق استخدام الحدث ClickEvent الخاص بأداة Microsoft Agent والذي ينطلق عند ضغط المستخدم على الشخصية بالفأرة.

لاحظ الكود التالي:

// C# Code
// agentCtl.ClickEvent += agent_ClickEvent;
public void agentCtl_ClickEvent _
    (object sender, AxAgentObjects._AgentEvents_ClickEvent e)
{
    // check for this if you have many characters
    if (e.characterID == "Merlin")
    {
        if (e.button == 2) // 1 = left, 2 = right
        {
            myContextMenu.Show(e.x, e.y);
        }
    }
' VB.NET
Public Sub agentCtl_ClickEvent(ByVal sender As object, _
        ByVal e As AxAgentObjects._AgentEvents_ClickEvent) _
        Handles agentCtl.ClickEvent
    ' check for this if you have many characters
    If (e.characterID = "Merlin") Then
        If (e.button = 2) Then ' 1 = left, 2 = right
            myContextMenu.Show(e.x, e.y)
        End If
    End If
End Sub

نلاحظ أننا قمنا أولا باكتشاف ما إذا كانت هذه هي الشخصية المطلوبة أم لا. لاحظ أنه في حالة استخدامك لأكثر من شخصية فسوف تحتاج إلى هذا السطر (على الأغلب.) بعد ذلك قمنا باكتشاف ما إذا تم الضغط بزر الفأرة الأيمن (والذي يرمز إليه الرقم 2 بينما الأيسر يرمز إليه الرقم 1) أم لا.

وأخيرا، قمنا بإظهار القائمة المنسدلة من النقطة التي ضغط عليها المستخدم.

مواضيع مشابهة:

اخترنا لك:

أحدث المواضيع:

هل أعجبتك؟ شارك بها...