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

سؤال عن التحكم في العناصر كيف يمكن اخفائها واظهارها ...

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

السلام عليكم

عندي في الفورم ان يكون هنالك عناصر ريديو بتن ، واسفل كل منها مجموعة عناصر مثل تكست بكس وزر ... هذه العناصر ليست مخفية 100% بحيث لا يرها المستخدم بل هي مخفية بشكلا يستطيع المستخدم الادخال معه ، واذا اختار المستخدم الريديو بتن الاول تظهر العناصر التي تحته بشكل طبيعي وهكذا ؟

كيف يمكن فعل ذلك ؟ انا اعلم انه نحتاج الى جمل شرط و استخادم الخواص لتلك العناصر ، لكن الامر لدي ليس مبلور بشكل ممتاز .

وشكرا لكم

#2

السلام عليكم ورحمة الله وبركاته

بإمكانك أخي أن تضع كل مجموعة عناصر تريدها أن تختفي أو تحجب مع بعضها البعض أن تضعها على عنصر Panel أو GroupBox ومن ثم تستخدم خاصية Visible للإخفاء والإظهار أو Enabled للحجب والتفعيل وبالتالي سيتم حجب جميع محتوياتها لأن خصائصها تتبع الحاوي الأب

الآن لو عندك عدة أزرار راديو أو حتى تشيك بوكس يمكن أن تجعل خاصية Enabled لل Panel تتبع قيمة Checked التابعة للعنصر المتحكم

وتجعل ذلك إما في حدث تغير حالة التشيك التابعة للعنصر

وأنا من عادتي أن أنشيء منهج اسمه UpdateControlStates وأضع فيه جميع التعليمات المطلوبة لتغيير حالات العناصر

وهذا المنهج يتم استدعائه من أي حدث يؤثر عليها

مثلا في أحداث التغير لعناصر الراديو أو من أزرار القوائم أو أزرار التول بار أو بالنقر على اختصار معين وهكذا

كمثال :

    	public void UpdateControls()
    	{
        	panel1.Enabled = radioButton1.Checked;
        	panel2.Enabled = radioButton2.Checked;
        	panel3.Enabled = radioButton3.Checked;
    	}

    	private void radioButton1_CheckedChanged(object sender, EventArgs e)
    	{
        	UpdateControls();
    	}

azik9pki3qc65p75g.jpg

وهذا مشروع بسيط يوضح ذلك :

http://www.mediafire.com/download.php?addkw93l6zg86tq

1

ما أقبـح المعصية ، تذهب لذتها ويبقى إثمها ... ومأ أحسن الطاعة ، تذهب مشقتها ويبقى ثوابها

كل نعيم دون الجنة غرور ... وكـل شقـاء دون النـار سرور

الدورة التطبيقية لتعليم التصميم بالإليستريتور

#3
المبرمج أبو أحمد كتب:

السلام عليكم ورحمة الله وبركاته

بإمكانك أخي أن تضع كل مجموعة عناصر تريدها أن تختفي أو تحجب مع بعضها البعض أن تضعها على عنصر Panel أو GroupBox ومن ثم تستخدم خاصية Visible للإخفاء والإظهار أو Enabled للحجب والتفعيل وبالتالي سيتم حجب جميع محتوياتها لأن خصائصها تتبع الحاوي الأب

الآن لو عندك عدة أزرار راديو أو حتى تشيك بوكس يمكن أن تجعل خاصية Enabled لل Panel تتبع قيمة Checked التابعة للعنصر المتحكم

وتجعل ذلك إما في حدث تغير حالة التشيك التابعة للعنصر

وأنا من عادتي أن أنشيء منهج اسمه UpdateControlStates وأضع فيه جميع التعليمات المطلوبة لتغيير حالات العناصر

وهذا المنهج يتم استدعائه من أي حدث يؤثر عليها

مثلا في أحداث التغير لعناصر الراديو أو من أزرار القوائم أو أزرار التول بار أو بالنقر على اختصار معين وهكذا

كمثال :

    	public void UpdateControls()
    	{
        	panel1.Enabled = radioButton1.Checked;
        	panel2.Enabled = radioButton2.Checked;
        	panel3.Enabled = radioButton3.Checked;
    	}

    	private void radioButton1_CheckedChanged(object sender, EventArgs e)
    	{
        	UpdateControls();
    	}

azik9pki3qc65p75g.jpg

وهذا مشروع بسيط يوضح ذلك :

http://www.mediafire.com/download.php?addkw93l6zg86tq

بارك الله بك طريقة جميلة جدا ، لكن لي سؤالين :

1- عندما اضع عناصر في البنل يتغير اتجاهها ، ما السبب ؟

2- هل هنالك طريقة اخرى من باب العلم ؟

وشكرا

#4
ابو علي المقدسي كتب:

بارك الله بك طريقة جميلة جدا ، لكن لي سؤالين :

1- عندما اضع عناصر في البنل يتغير اتجاهها ، ما السبب ؟

2- هل هنالك طريقة اخرى من باب العلم ؟

وشكرا

السلام عليكم ورحمة الله وبركاته

وفيك بارك أخي الطيب

بالنسبة لبعض العناصر الحاوية هذا عيب فيما يخص خاصية من اليمين إلى اليسار

ولكن يمكنك استخدام عنصر TableLayoutPanel بحيث تقسمه إلى عدة أعمدة بحيث تضع كل عنصر في خانة وحينها ستنقلب العناصر لأن خاصية من اليمين إلى اليسار شغالة وتتبع الفورم أو الحاوي

بالنسبة لطريقة أخرى لا شك أن هناك أكثر من طريقة وتتبع المبرمج نفسه

فمثلا يوجد خاصية اسمها Tag وهي موجودة في كل العناصر هذه الخاصية كثير من الناس يظن أنها بلا فائدة ولكن فائدتها كبيرة في كثير من الحالات

فمثلا تريد أن تنتمي مجموعة من العناصر المختلفة في كامل البرنامج وليس فقط ضمن بانيل أو فورم واحد إلى مجموعة حينها تعطي خاصية التاج لهذه العناصر قيمة واحدة ولتسمها "Group1" مثلا و أثناء البرمجة عندما تريد تطبيق أمر مشترك على هذه العناصر ما عليك إلا عمل حلقة foreach ثم تفحص خاصية التاج Tag لكل عنصر فإذا ساوى قيمة المجموعة التي تبحث عنها عندها اعمل كذا

foreach (Control tControl in this.Controls)
{
            	if (tControl.Tag == "Group1")
            	{
                    	tControl.Enabled = false;
            	}

}

تم تعديل هذه المشاركة بواسطة المبرمج أبو أحمد في 2 مايو 2012 في 14:18

ما أقبـح المعصية ، تذهب لذتها ويبقى إثمها ... ومأ أحسن الطاعة ، تذهب مشقتها ويبقى ثوابها

كل نعيم دون الجنة غرور ... وكـل شقـاء دون النـار سرور

الدورة التطبيقية لتعليم التصميم بالإليستريتور

#5
المبرمج أبو أحمد كتب:

السلام عليكم ورحمة الله وبركاته

وفيك بارك أخي الطيب

بالنسبة لبعض العناصر الحاوية هذا عيب فيما يخص خاصية من اليمين إلى اليسار

ولكن يمكنك استخدام عنصر TableLayoutPanel بحيث تقسمه إلى عدة أعمدة بحيث تضع كل عنصر في خانة وحينها ستنقلب العناصر لأن خاصية من اليمين إلى اليسار شغالة وتتبع الفورم أو الحاوي

بالنسبة لطريقة أخرى لا شك أن هناك أكثر من طريقة وتتبع المبرمج نفسه

فمثلا يوجد خاصية اسمها Tag وهي موجودة في كل العناصر هذه الخاصية كثير من الناس يظن أنها بلا فائدة ولكن فائدتها كبيرة في كثير من الحالات

فمثلا تريد أن تنتمي مجموعة من العناصر المختلفة في كامل البرنامج وليس فقط ضمن بانيل أو فورم واحد إلى مجموعة حينها تعطي خاصية التاج لهذه العناصر قيمة واحدة ولتسمها "Group1" مثلا و أثناء البرمجة عندما تريد تطبيق أمر مشترك على هذه العناصر ما عليك إلا عمل حلقة foreach ثم تفحص خاصية التاج Tag لكل عنصر فإذا ساوى قيمة المجموعة التي تبحث عنها عندها اعمل كذا

foreach (Control tControl in this.Controls)
{
            	if (tControl.Tag == "Group1")
            	{
                    	tControl.Enabled = false;
            	}

}

جزيت خيرا يا طيب

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

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

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

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

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