PDA

View Full Version : چطور میتونم از داخل FlowLayOutPanel یه Label رو حذف کنم؟



hamzehshabani
دوشنبه 09 اسفند 1389, 16:37 عصر
سلام.
اساتید اگه میتونن کمکم کنن تا ایشالا بتونم یه روزی جبران کنم، راستش من دارم یه برنامه برای یک شرکت تعمیراتی موبایل مینویسم و یکسری مشکلات معمول رو توش بصورت پیش فرض تعریف کردم (بصورت چک باکس) که منشی مثلا اگه گوشی مشکل میکروفن داشت تیک رو بزنه و رسید صادر شده نشون بده که میکروفن مشکل داشته.
تا اینجا همه چیز عادیه اما میخوام وقتی تیک مربوطه زده میشه توی یک FlowLayOutPanel که ساخته شده یک لیبل بوجود بیاد و بنویسه مشکل از میکروفنه تا منشی بدونه دقیقا چه اشکالاتی رو تیک زده، این کار رو با کد زیر انجام دادم.

if (micCheck.Checked == true)
{
Label newLabel1 = new Label();
newLabel1.Name = micCheck.Text;
newLabel1.Text = "myExampleTXT";
flowLayoutPanel1.Controls.Add(newLabel1);
}

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

چیکار باید بکنم؟

چون متغیر قراره توی محیط اجرا ساخته بشه نمیتونم از این کد جواب بگیرم:

flowLayoutPanel1.Controls.Remove(newLabel1);

چیکار میتونم بکنم؟

hamzehshabani
دوشنبه 09 اسفند 1389, 16:48 عصر
بازم سلام این مشکل رو تا حدودی با کد RemoveAt حل کردم:

flowLayoutPanel1.Controls.RemoveAt(0);

اما مشکل اینه که باید تو بخش داخل پرانتز ایندکس وارد کنم و نمیدونم چطوری باید لیبل هایی که ساخته میشه ایندکس گذاری بشه... :ناراحت:

و چون مشخص نیست هر گوشی که میاد تو شرکت چندتا خرابی داره نمیشه ایندکس ها رو جمع و جور کرد.:گریه:

exlord
دوشنبه 09 اسفند 1389, 21:21 عصر
2 تا کار میتونی انجام بدی ....

1 -
Label l = new Label();
l.Name = "MicProblem";
flowLayoutPanel1.Controls.RemoveByKey("MicProblem");

2 -
Label l = new Label();
l.Name = "MicProblem";
l.Click += new EventHandler(l_Click);

Label selectedLable = null;
void l_Click(object sender, EventArgs e)
{
selectedLable = sender as Label;
}

flowLayoutPanel1.Controls.Remove(selectedLable);

hamzehshabani
چهارشنبه 11 اسفند 1389, 09:24 صبح
دستت درد نکنه عزیزم، کمک بزرگی کردی، ایشالا همیشه موفق باشی.