سؤال

أقوم بإضافة عناصر ToolStripButton برمجياً إلى قائمة السياق.

هذا الجزء سهل.

this.tsmiDelete.DropDownItems.Add("The text on the item.");

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

كيف أقوم بهذا العمل؟تحتاج الطريقة التي تتعامل مع النقرة أيضًا إلى تلقي نوع من المعرف أو الكائن المرتبط بـ ToolStripButton المعين الذي نقر عليه المستخدم.

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

المحلول

ألا يمكنك فقط الاشتراك في حدث Click؟شيء من هذا القبيل:

ToolStripButton btn = new ToolStripButton("The text on the item.");
this.tsmiDelete.DropDownItems.Add(btn);
btn.Click += new EventHandler(OnBtnClicked);

وسيتم الإعلان عن OnBtnClicked على النحو التالي:

private void OnBtnClicked(object sender, EventArgs e)
{
    ToolStripButton btn = sender as ToolStripButton;

    // handle the button click
}

يجب أن يكون المرسل هو ToolStripButton، حتى تتمكن من إرساله والقيام بكل ما تريد القيام به به.

نصائح أخرى

شكرا لمساعدتكم مع أندي.مشكلتي الوحيدة الآن هي أن AutoSize لا يعمل على ToolStripButtons التي أقوم بإضافتها!جميعها ضيقة جدًا.

إنه أمر غريب إلى حد ما لأنه كان يعمل في وقت سابق.


تحديث:من المؤكد أن هناك خطأ ما في AutoSize لـ ToolStripButtons التي تم إنشاؤها برمجيًا.ومع ذلك، وجدت الحل:

  1. قم بإنشاء ToolStripButton.
  2. قم بإنشاء عنصر تحكم في التسمية وقم بتعيين خصائص الخط لتتناسب مع الزر الخاص بك.
  3. قم بتعيين نص التسمية ليتناسب مع الزر الخاص بك.
  4. قم بتعيين التسمية إلى الحجم التلقائي.
  5. اقرأ عرض الملصق واستخدمه لتعيين عرض ToolStripButton.

إنه اختراق، لكنه يعمل.

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