الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سؤالان عن الوراثة و انشاء القوائم للزر الايمن للفأرة

بدأه المبرمجh في 14 فبراير 2012 · 10 رد · 892 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

انا عندي في برنامجي عدد من tab وكل تاب اريد ان اضع فيه نفس القوائم الموجودة في التاب الاول ، بحيث اذا برمجة الامر فتح في التاب الاولى في القائمة يتم اتماتيك برمجة الامر فتح في التاب الثانية ، هل يمكن استخدام مفاهيم الوراثة هنا ؟

وبناء على ذلك :

كيف يمكن اجراء عملية الوراثة بين اثنان من الفورم ؟

كيف يمكن اجراء عملية الوراثة بين اثنان من ال tab ؟

كيف يمكن لي ان انشىء قائمة تظهر عند الضغط على الزر اليميني للفأرة في برنامجي ؟

وكيف اضع لها عناصر ؟

#2

وضح سؤالك أخي لنساعدك

#3
Albert1990 كتب:

وضح سؤالك أخي لنساعدك

اخي الكريم اليس من الممكن باستخدام الوراثة ان ننشىء فورم يرث فورم اخر ؟

هل يمكن عمل ذلك للتاب اي ان انشاء تاب ثم انشاء تاب اخرى ترث التاب الاولى ؟

اذا كان ما سبق ممكن فكيف انفذه فعلا ؟

ما الاكواد البرمجية لذلك ؟

ارجوا ان اكون قد وفقت في التوضيح

تم تعديل هذه المشاركة بواسطة المبرمجh في 15 فبراير 2012 في 11:24

#4

السلام عليكم.

نعم يمكنك ذلك, بعد إنشاء الفورم و تخصيصه بالطريقة التي تريدها, أي فورم جديد تريده يعمل نفس عمل الفورم الأول " القياسي" يمكنك فقط الوراثة منه, فمثلاً:

الفورم التالي موروث من Form الموجود في .NET :

    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
    }

و إذا كان اسم الفورم القياسي الذي خصصته هو Form1 فيكفي أن تغير Form إلى Form1 فيصبح الفورم الجديد موروثاً من الفورم القياسي:

    public partial class Form2 : Form1
    {
        public Form2()
        {
            InitializeComponent();
        }
    }

و نفس الشيء ينطبق على عنصر التاب.

#5
Adel Khayata كتب:

السلام عليكم.

نعم يمكنك ذلك, بعد إنشاء الفورم و تخصيصه بالطريقة التي تريدها, أي فورم جديد تريده يعمل نفس عمل الفورم الأول " القياسي" يمكنك فقط الوراثة منه, فمثلاً:

الفورم التالي موروث من Form الموجود في .NET :

    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
    }

و إذا كان اسم الفورم القياسي الذي خصصته هو Form1 فيكفي أن تغير Form إلى Form1 فيصبح الفورم الجديد موروثاً من الفورم القياسي:

    public partial class Form2 : Form1
    {
        public Form2()
        {
            InitializeComponent();
        }
    }

و نفس الشيء ينطبق على عنصر التاب.

بارك الله فيك ، لكن بالنسبة لكود التاب لم اجده في الكود حيث انني ضغط على الفورم مرتين فظهر كل الكود لكن لم اجد ما يتعلق بالتاب مع انه لدي تاب في البرنامج ، فأرجوا التوضيح ؟

سؤال اخر : الان التاب او الفورم الذي يرث من غيره يأخذ جميع خصائصه ، يعني انا عندي في التاب الاول قوائم و في الثاني قوائم نفس الشيء هل يكفي في حال كان التاب الثاني يرث من الاول ان ابرمج القوائم للتاب الاولى لتبرمج قوائم التاب الثانية تلقائيا ؟

ام ان الامر مختلف

؟

ارجوا التوضيح .

ولك جزيل الشكر

#6
بارك الله فيك ، لكن بالنسبة لكود التاب لم اجده في الكود حيث انني ضغط على الفورم مرتين فظهر كل الكود لكن لم اجد ما يتعلق بالتاب مع انه لدي تاب في البرنامج ، فأرجوا التوضيح ؟

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

اقتباس
سؤال اخر : الان التاب او الفورم الذي يرث من غيره يأخذ جميع خصائصه ، يعني انا عندي في التاب الاول قوائم و في الثاني قوائم نفس الشيء هل يكفي في حال كان التاب الثاني يرث من الاول ان ابرمج القوائم للتاب الاولى لتبرمج قوائم التاب الثانية تلقائيا ؟

ام ان الامر مختلف

؟

هذا الكلام صحيح, فبمجرد أن تضع أي ميزة جديدة في الفورم الأصلي, يتم توريثها إلى أي فورم تم تعريفه على أنه تابع للفورم الأصلي.

#7

كيف يمكن لي ان انشىء قائمة تظهر عند الضغط على الزر اليميني للفأرة في برنامجي ؟

انظر الرابط

contextMenuStrip

#8

مثال بسيط عسى يفيدك

قمت بصنع صف جديد إسمه MyTab ويرث من الـTabControl

وجعلت بداخله تابع إسمه addLabels يقوم بإضافة قائمة بمجموعة من الأسماء التي أزوده بها

وبالتالي أصبح أي Tab تقوم بإنشائه من هذا الصف سيتمتع بنفس هذا السلوك وفي حال أردت سلوك مختلف لكل صف مشتق منه على حدى مثلا فيمكنك جعل التابع المسمى بـ addLables على أنه Virtual method وتقوم بعمل Override في بقية الأماكن .

هذا الكود تبع المثال :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing;

namespace TabTesting
{
    class MyTab:TabControl
    {
        public MyTab(string name,Size size)
        {
            this.Name = name;
            this.Size = size;
            this.Location = new Point(0, 0);
        }
        public Panel addLables(List<string> names)
        {
            Panel panel = new Panel();
            panel.Location = new Point(10, 10);
            panel.Size = new System.Drawing.Size(100, 100);
            panel.Name = "panel1";
            Label lbl;
            for (int i = 0; i < names.Count; i++)
            {
                lbl = new Label();
                lbl.Text = names; ;
                lbl.Name = "samer" + i;
                lbl.Location = new Point(10, (i+1) * 10);
                panel.Controls.Add(lbl);
            }
            return panel;
        }
    }
}

وهي الـ Form الأساسي :

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace TabTesting
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            MyTab myTab = new MyTab("MyList", this.Size);
            TabPage pg = new TabPage("firstTab");
            List<string> names=new List<string>();
            names.Add("soso");
            names.Add("koko");
            Panel p=myTab.addLables(names);
            pg.Controls.Add(p);
            myTab.Controls.Add(pg);

            this.Controls.Add(myTab);


        }
    }
}

بالتوفيق :)

وتصبحو على خير هههه

#9

السلام عليكم

لقد تمكنت من عمل contextMenuStrip ووضعت فيها ما اريد وبرمجتها كبرمجة القوائم .

بالنسبة للتاب لم افهم عليكم اخوتي

مثلا اخي عادل انت قلت

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

اي Component و ما هي الخصائص ؟

وكيف يكون الكود ؟

اخي الكريم Albert1990 بارك الله فيك لكن لم افهم ما علاقة الكود الذي وضعته بالتاب ؟

نرجوا التوضيح

ولكم جزيل الشكر

#10
اقتباس
اي Component و ما هي الخصائص ؟

يكون بإضافة Item جديد ( اضغط بزر الماوس اليمين على المشروع و اختر New Item ) و من نوع Component.

اقتباس
وكيف يكون الكود ؟

بمجرد إنشاء ال component الجديد يتم إضافة الكود الذي تريد به تخصيص أي عنصر لديك.

#11
Adel Khayata كتب:

يكون بإضافة Item جديد ( اضغط بزر الماوس اليمين على المشروع و اختر New Item ) و من نوع Component.

بمجرد إنشاء ال component الجديد يتم إضافة الكود الذي تريد به تخصيص أي عنصر لديك.

للرفع

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…