حذف یک GroupBox بدون حذف آیتیم های درون آن

prince_Persia_7

Well-Known Member
سلام. چطور میشه یک گروپ باکس و یا یک Panel رو که درونش تعداد زیادی آبجکت هست رو حذف کرد بدون اینکه آبجکت های درونش پاک بشن . چون من مجبورم همه ی آبجکتاش رو اول به بیرون از اون انتقال بدم بعد خود GrouBox رو حذف کنم.
و یه سوال دیگه : میخوام مثلا یه دکمه بزارم توی کادر یه پنل (یا یه گروپ ) ولی توی خود اون پنل نره بلکه یه لایه پایین تر از اون قرار بگیره. در کل کار با لایه ها چجوریه؟
 

the_king

مدیرکل انجمن
سلام. چطور میشه یک گروپ باکس و یا یک Panel رو که درونش تعداد زیادی آبجکت هست رو حذف کرد بدون اینکه آبجکت های درونش پاک بشن . چون من مجبورم همه ی آبجکتاش رو اول به بیرون از اون انتقال بدم بعد خود GrouBox رو حذف کنم.
اگه منظورتون زمان طراحی فرم ئه، راه حل همون کاری که است که انجام می دهید. اما اگر منظورتون زمان اجرای کد ئه :
کد:
        private void RemoveControl(Control ctl)
        {
            Control[] childs = new Control[ctl.Controls.Count];
            ctl.Controls.CopyTo(childs, 0);
            foreach (Control child in childs)
            {
                child.SuspendLayout();
                child.Location = new Point(child.Left + ctl.Left, child.Top + ctl.Top);
                child.Parent = ctl.Parent;
                child.ResumeLayout(true);
            }
            ctl.Dispose();
        }

مثلا :
کد:
            RemoveControl(groupBox1);

و یه سوال دیگه : میخوام مثلا یه دکمه بزارم توی کادر یه پنل (یا یه گروپ ) ولی توی خود اون پنل نره بلکه یه لایه پایین تر از اون قرار بگیره. در کل کار با لایه ها چجوریه؟
اگر لایه پایین تر قرار بگیره که پنل رویش رو می پوشونه و دیده نمیشه. کنترل ها به ترتیب z-order شون رسم می شوند اما هیچ کنترل فرزند ای پشت کنترل والد اش
قرار نمی گیره. اگر دکمه ای پایین تر از لایه پنل قرار گرفته نمی تونه فرزند اون پنل باشه.
Bring To Front و Send To Back موقعیت کنترل (z-order) رو تغییر می دهند.
موقع طراحی فرم روی کنترل ها راست کلیک کنید. گزینه های Bring To Front و Send To Back موجود اند.
برای انجام اینکار با کد نویسی متد های BringToFront و SendToBack موجود اند.
 

جدیدترین ارسال ها

بالا