كيف أحدد رقم الصفحة لعلامة التبويب التي نقرت عليها للتو في gtk#؟

StackOverflow https://stackoverflow.com/questions/93044

  •  01-07-2019
  •  | 
  •  

سؤال

لدي دفتر ملاحظات GTK به علامات تبويب متعددة.كل تسمية علامة تبويب عبارة عن حاوية مركبة تحتوي، من بين أشياء أخرى، على زر أريد استخدامه لإغلاق علامة التبويب.يحتوي الزر على معالج للإشارة "التي تم النقر عليها".

عندما يتم استدعاء الإشارة، أحصل على عنصر واجهة المستخدم للزر و"EventArgs" كمعلمة.

أحتاج إلى تحديد رقم الصفحة بناءً على عنصر واجهة مستخدم الزر، لكن myNotebook.PageNum(buttonWidget) يُرجع دائمًا -1.لقد قمت حتى بتجربة ButtonWidget.Parent وهو HBox الذي يحتوي على الأداة.

هل لديك أي أفكار حول ما يمكنني فعله أو ما الذي أفعله بشكل خاطئ؟

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

المحلول

أحد الحلول السهلة هو تمرير رقم الصفحة إلى حدث النقر الخاص بالزر أثناء قيامك بإنشاء الأزرار.

for (int page = 0; page < n; page++){ 
    int the_page = page;
    NotebookPage p = new NotebookPage ();
    ...
    Button b = new Button ("Close page {0}", the_page);
    b.Clicked += delegate { 
        Console.WriteLine ("Page={0}", the_page); 
    };
}

تعتبر "the_page" مهمة لأنها متغير جديد سيتم التقاطه بواسطة المندوب.

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