أريد أن أكتب دالة تأخذ كائن من نافذة "فورم" و تقوم بالبحث عن أى تيكست بوكس و ترى لو أن هناك أى كتابة فى أى واحد فى أى عمق تخبرنى بذلك
مثال على ذلك
أريد أن أكتب دالة تأخذ كائن من نافذة "فورم" و تقوم بالبحث عن أى تيكست بوكس و ترى لو أن هناك أى كتابة فى أى واحد فى أى عمق تخبرنى بذلك
مثال على ذلك
لا إله إلا الله محمد رسول الله
アッラー以外に神はなし。ムハンマドはアッラーの使徒である
لابد من استخدام recursion method بمعني ان تستدعي الدالة نفسها
و بالنسبة لما تريد انت تقصد ان تمرر container control لدالة و الرجوع بكل النصوص المكتوبة داخله
الكود التالي يوضح ما تريد
public void GetTextBoxesValues(Control container,ref List<string> values)
{
foreach (Control child in container.Controls)
{
if (child is TextBox)
{
if (!string.IsNullOrEmpty(child.Text.Trim())) values.Add(child.Text);
}
else
{
GetTextBoxesValues(child, ref values);
}
}
}استدعي دالة GetTextBoxesValues و مرر لها اسم الكنترول و list of strings لتخزين القيم ( لاحظ استدعاء الدالة لنفسها)
الكود التالي يوضح الاستخدام
List<string> values = new List<string>();
GetTextBoxesValues(this, ref values);
foreach (string str in values)
{
MessageBox.Show(str);
}بالتوفيق
يبدو أنه لا يوجد أى طريقة أخرى للأسف
لم أكن أريد أن أستخدم هذه الطريقة
عموما شكرا لك
لا إله إلا الله محمد رسول الله
アッラー以外に神はなし。ムハンマドはアッラーの使徒である
اقتباسيبدو أنه لا يوجد أى طريقة أخرى للأسفلم أكن أريد أن أستخدم هذه الطريقة
ايه المشكله في الطريقة دي ؟!
الstack
ممكن يحدث overflow
و لكن عموما المفروض أن عدد الكنترولات مهما بلغ عددها لن تصل الى درجة الoverflow
لا إله إلا الله محمد رسول الله
アッラー以外に神はなし。ムハンマドはアッラーの使徒である
اقتباسالstackممكن يحدث overflow
و لكن عموما المفروض أن عدد الكنترولات مهما بلغ عددها لن تصل الى درجة الoverflow
مظبوط كلامك بس ال C# مفيش فيها limit لل recursion يعني معاك لحد نهاية الذاكرة :lol:
بس فيه لغات تانية بتحدد ال depth زي ال prolog و python و transact sql
هذا الكود يعمل فقط فى تطبيقات ال SDI و ليس ال MDI
تم تعديل هذه المشاركة بواسطة Night Coder في 3 أكتوبر 2008 في 08:27
Technical Lead Developer
اللهم قنى شر الجهل و الجهلاء
( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}
اقتباسالحد المسموح به في ال#C قبل حدوث الStack Overflow هو 127 أي بمعنى أن الfunction يمكنها أن تنادي نفسها بحد اقصى 127 مرة
فعلا يوجد limit (اعتذر عن الخطأ في المشاركة السابقة)و لكن ليس 127 (حسب تجربتي)
لقد قمت بتجربة الكود التالي و لم يحدث Exception و قيمة المتغير depth كما توقعت =10001
//to count depth limit
int depth = 0;
public void TestRecursionDepthLimit()
{
//add 1 for every recursive calling
depth++;
//check if 10000 is acceptable depth limit
if (depth > 10000)
{
return;
}
// recursion
TestRecursionDepthLimit();
}اقتباسهذا الكود يعمل فقط فى تطبيقات ال SDI و ليس ال MDI
قمت بتجربة الكود مع MDI لا توجد مشكلة !!!
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…