PDA

View Full Version : سوال: تبدیل رشته به کنترل ( Convert String To Control )



forodo
پنج شنبه 14 آذر 1392, 09:20 صبح
سلام
من کد زیر رو نوشتم و می خوام بره داخل pan1 که یک پنل هستش و عملیاتی انجام بده.
توی اینترنت سرچ کردم و این تبدیل رو به این صورت نوشته بود ولی اصلاً داخل حلقه foreach نمی ره.
وقتی pan1 رو خودم می ذارم جای p درست کار می کنه.
من 10 یا 20 یا بیشتر پنل دارم که داخل هر کدوم 5 radiobutton هستش و می خوام ببینم که توی پنل اول کدوم تیک خورده و توی پنل دوم کدوم و الی آخر.

string s = "pan1";
Panel p = new Panel();
p.Name = s;
foreach (Control cc in p.Controls)
{
MessageBox.Show("aaa");
if (cc is RadioButton)
{
if (((RadioButton)cc).Checked == true)
{
MessageBox.Show("Test");
label14.Text += cc.Tag.ToString();

}
}
}

rahnema1
پنج شنبه 14 آذر 1392, 11:06 صبح
سلام
این را امتحان کنید


foreach (Control pan in this.Controls) {
if (pan is Panel) {
foreach (Control radio in pan.Controls) {
if (radio is RadioButton & ((RadioButton)radio).Checked) {
MessageBox.Show(((RadioButton)radio).Text.ToString ());
}
}
}
}

forodo
پنج شنبه 14 آذر 1392, 11:31 صبح
سلام
این را امتحان کنید


foreach (Control pan in this.Controls) {
if (pan is Panel) {
foreach (Control radio in pan.Controls) {
if (radio is RadioButton & ((RadioButton)radio).Checked) {
MessageBox.Show(((RadioButton)radio).Text.ToString ());
}
}
}
}

کار نمی کنه.
اصلاً داخل foreach دومی نمیره. مسیج باکس گذاشتم اصلاً اجرا نمیشه.

forodo
پنج شنبه 14 آذر 1392, 14:53 عصر
بذارید یه جوره دیگه بگم.
من چندتا panel ( تعدادش مشخص نیست ) دارم و توی هرکدوم 5تا radiobutton هستش. کاربر میاد از تمام پنل ها یک ریدیوباتن رو انتخاب می کنه و در انتها دکمه ای رو می زنه . وقتی که دکمه رو می زنه باید برنامه بره همه پنلها به ترتیب اون ریدیوباتنی که تیک خورده رو برگردونه.
یعنی مثلاً سوال 1 تیک 3 رو زده و سوال 2 تیک 4 رو زده و الی آخر.
به من یه رشته برمی گردونه که به این شکله:
24 13
113515

Kubuntu
پنج شنبه 14 آذر 1392, 16:38 عصر
وقتی می گی
Panel p = new Panel();
می یاد یک پنل جدید ایجاد می کنه که توش خالیه. واضحه داخل پنل هیچ کنترلی وجود نداره! درنتیجه داخل حلقه نمی ره

forodo
پنج شنبه 14 آذر 1392, 17:43 عصر
وقتی می گی
Panel p = new Panel();
می یاد یک پنل جدید ایجاد می کنه که توش خالیه. واضحه داخل پنل هیچ کنترلی وجود نداره! درنتیجه داخل حلقه نمی ره
می دونم.
برای همین می خوام رشته "panel"+"1" رو به کنترل تبدیل کنم و داخل حلقه foreach بذارم.
بعد یکی یکی به اون 1 اضافه کنم.
تمام مشکلم هم همینه.

rahnema1
پنج شنبه 14 آذر 1392, 21:05 عصر
شما می تونید یک TableLayoutPanel با یک ستون و به تعداد سوالات ردیف تعریف کنید و در هر ردیف هم یک TableLayoutPanel بذارید که توی اون TableLayoutPanel دومی RadioButton ها باشند بعدش هم می تونید با استفاده از متد GetControlFromPosition کنترلها و مقدار اونها را پیدا کنید یه نمونه کد ساده گذاشتم

forodo
پنج شنبه 14 آذر 1392, 23:51 عصر
شما می تونید یک TableLayoutPanel با یک ستون و به تعداد سوالات ردیف تعریف کنید و در هر ردیف هم یک TableLayoutPanel بذارید که توی اون TableLayoutPanel دومی RadioButton ها باشند بعدش هم می تونید با استفاده از متد GetControlFromPosition کنترلها و مقدار اونها را پیدا کنید یه نمونه کد ساده گذاشتم
یعنی ایول داری و شکی هم درش نیست.
دقیقاً همون چیزیه که می خواستم.
یعنی اگه جا داشت 50تا تشکر می زدم چون با روشت خیلی حال کردم.
فقط یه چیزی که هست نمی دونم چرا می خوام Scroolbar بندازم بعضی مواقع میاد بعضی مواقع نمیاد.
کار با اسکرول بارشو نفهمیدم.

krasus
جمعه 15 آذر 1392, 00:17 صبح
سلام.
منم دقیقا همین مشکل دوست عزیزمون آقای forodo رو دارم و می خواهم بدانم چه طور یک رشته را می توانم به کنترل تبدیل کنم.

rahnema1
جمعه 15 آذر 1392, 00:26 صبح
یعنی ایول داری و شکی هم درش نیست.
دقیقاً همون چیزیه که می خواستم.
یعنی اگه جا داشت 50تا تشکر می زدم چون با روشت خیلی حال کردم.
فقط یه چیزی که هست نمی دونم چرا می خوام Scroolbar بندازم بعضی مواقع میاد بعضی مواقع نمیاد.
کار با اسکرول بارشو نفهمیدم.

اسکرول بار کجا باشه؟ می خواهی کجا بذاری؟

forodo
جمعه 15 آذر 1392, 18:01 عصر
وقتی که مثلاً 10 تا TableLayoutPanel رو داخل یک TableLayoutPanel می ذارم و اون اصلی رو می کشم بالا تا جایی که فقط مثلاً 5تا TableLayoutPanel داخلی نشان داده بشه ولی scroolbar نمیاره.