PDA

View Full Version : سوال: مشکل با کنترلهای فرم MDI



rtech
شنبه 25 آبان 1387, 08:05 صبح
با سلام
من یک فرم از نوع MDI دارم که چند تا کنترل روی آن قرار دادم اما وقتی فرمهای child لود میشن زیر اون کنترلهای قرار میگیرند . چطوری میتونم کاری کنم که فرم ها بالای کنترلها قرار بگیرند ؟

rostamkhani
یک شنبه 26 آبان 1387, 08:53 صبح
سلام
توسط کد زیر میتونی این کار رو انجام بدی


[DllImport("user32.dll")]
private static extern int SetParent(int hWndChild, int hWndNewParent);
private void button1_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
frm2.MdiParent = this;
frm2.Show();
setControlInMdi();
frm2.WindowState = FormWindowState.Maximized;
}
private void setControlInMdi()
{
MdiClient mdiC = (MdiClient)this.Controls[this.Controls.Count - 1];
for (int i = 0; i < this.Controls.Count - 1; i++)
{
SetParent(this.Controls[i].Handle.ToInt32(), mdiC.Handle.ToInt32());
}
}


کلا Net. جلوی این کار رو گرفته ولی خب API این حرفا حالیش نیست

rtech
دوشنبه 27 آبان 1387, 12:24 عصر
با تشکر از شما دوست عزیز
من در فرم mdi منو دارم و حالا که از کد شما استفاده کردم بعد از کلیک بر روی منوها و فعال شدن فرم یک قسمت آبی رنگ بالای منو ظاهر میشه مثل شکل زیر ، چطور این مشکل رو برطرف کنم ؟

rostamkhani
دوشنبه 27 آبان 1387, 21:53 عصر
خواهش میکنم وظیفه بود
این مشکل به خاطر Top بودن خصوصیت Dock منو هست .


menuStrip1.Dock = DockStyle.None;
menuStrip1.AutoSize = false;
menuStrip1.Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top;

در ضمن چون این کار در داتنت وجود نداره و حتی جلوگیری شده احتمال مشکل هست مثلا بعد آوردن منو
وقتی فرم رو Maximized میکنیم مشکل بازگشت به حالت Normal پیش میاد از این رو اگر میخواهید تو برنامتون استفاده کنید باید کاملا تست بشه .
یا علی