• 0
ابو علي المقدسي

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

سؤال

السلام عليكم

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

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

وشكرا لكم

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

4 إجابة على هذا السؤال .

  • 0

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

بإمكانك أخي أن تضع كل مجموعة عناصر تريدها أن تختفي أو تحجب مع بعضها البعض أن تضعها على عنصر 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

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

بإمكانك أخي أن تضع كل مجموعة عناصر تريدها أن تختفي أو تحجب مع بعضها البعض أن تضعها على عنصر 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- هل هنالك طريقة اخرى من باب العلم ؟

وشكرا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

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

وشكرا

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

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

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

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

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

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

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


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

}

تم تعديل بواسطه المبرمج أبو أحمد
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

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

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

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

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

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


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

}

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .