PDA

View Full Version : سوال: ارور در حلقه foreach



mh3242
جمعه 27 تیر 1393, 02:18 صبح
سلام دوستان
یه تکه کد دارم به صورت:

FrmCreateFile frm = new FrmCreateFile();
foreach (TextBox txt in frm)
{
txt.Text = "";
}
]
که تو خط دوم برای کلمه foreach ارور میده با متن:


foreach statement cannot operate on variables of type 'System.Windows.Forms.Form' because 'System.Windows.Forms.Form' does not contain a public definition for 'GetEnumerator' D:\programm\s1\s1\FrmCreateFile.cs

کسی میدونه دلیل این ارور چیه؟

Pedram_Parsian
جمعه 27 تیر 1393, 02:22 صبح
این حلقه داخل همون فرم FrmCreateFile هستش ؟
به جای frm باید بنویسی This.controls

mh3242
جمعه 27 تیر 1393, 02:28 صبح
اره داخل همون فرمه.
کاری که گفتین رو انجام دادم.
run time error داده که نمیتونه button رو به textbox تبدیل کنه!!!

Pedram_Parsian
جمعه 27 تیر 1393, 02:46 صبح
خوب شما باید اینطوری بنویسی :

foreach (Control c in this.Controls)
{
if (c is TextBox)
{
c.Text = "";
}
}

:لبخند:

abbas.oveissi
جمعه 27 تیر 1393, 02:49 صبح
اره داخل همون فرمه.
کاری که گفتین رو انجام دادم.
run time error داده که نمیتونه button رو به textbox تبدیل کنه!!!
اینجوری بنویسید :
foreach (Control ctr in this.Controls)
{
if (ctr is TextBox)
{
ctr.Text = "";
}
}

sadegh.javan
جمعه 27 تیر 1393, 03:04 صبح
foreach(Control control in this.Controls)
{
if(control.GetType()==typeof(TextBox))
{
control.Text = "";
}
}

mh3242
جمعه 27 تیر 1393, 11:39 صبح
خیلی ممنون دوستان اما هیچ کدوم از راه حل هایی که ارائه کرده بودین جواب نمیده

erfan_urchin
جمعه 27 تیر 1393, 13:05 عصر
خیلی ممنون دوستان اما هیچ کدوم از راه حل هایی که ارائه کرده بودین جواب نمیده
دوست عزیز راهی که آقای Pedram_Persian گفتن کاملا درسته و باید جواب بده. یعنی این کد

foreach (Control c in this.Controls)
{
if (c is TextBox)
{
c.Text = "";
}
}

اگه برای شما جواب نمیده احتمالا تکست باکس شما توی Panel یا GroupBox هستش. اگه همینطوره از کد زیر استفاده کنید
foreach (Control c in panel1.Controls)
{
if (c is TextBox)
c.Text = "";
}

Pedram_Parsian
جمعه 27 تیر 1393, 14:11 عصر
خیلی ممنون دوستان اما هیچ کدوم از راه حل هایی که ارائه کرده بودین جواب نمیده

یعنی چه مشکلی داره ؟ درضمن باید بگم اگه از کامپوننت استفاده می کنید این راه جواب نمیده ....
(اگه خواستید بگید تا آموزشش رو قرار بدم)

.......

:متفکر::متفکر::متفکر:
دوستان ! چرا ؟ :متعجب:
من جواب رو قرار دادم بعد 2 نفر دیگه دقیقا همون رو قرار دادن ؟؟ :متفکر::افسرده:
آخه چرا ؟

abbas.oveissi
جمعه 27 تیر 1393, 17:52 عصر
:متفکر::متفکر::متفکر:
دوستان ! چرا ؟ :متعجب:
من جواب رو قرار دادم بعد 2 نفر دیگه دقیقا همون رو قرار دادن ؟؟ :متفکر::افسرده:
آخه چرا ؟
چون از Ajax اینا در ساخت فروم استفاده نشده،وقتی پست جدید میاد تا صفحه Refresh نشه مشخص نمیشه.زمانی هم که من اومدم هنوز جواب شما ارسال نشده بود،بعد که دکمه ارسال پاسخ رو زدم و صفحه Refresh شد،دیدم که قبل من جواب دادید.این دلیلش بود :لبخند: