मैं विनफॉर्म एप्लिकेशन पर काम कर रहा हूं और पैरेंट फॉर्म के केंद्र में मोडल फॉर्म खोलना चाहता हूं। Winform आवेदन में है:एमडीआई आवेदन में पेरेंट फॉर्म के केंद्र में ओपन मॉडल विंडो
- एमडीआई फार्म एमडीआई फार्म के मेनू आइटम में से एक के क्लिक पर
- (सभी के लिए कंटेनर के रूप में स्टार्टअप फार्म और अधिनियम के रूप में खुला) - एक एमडीआई बाल रूप
- पर खुलता है चरण 2 में खोले गए एमडीआई चाइल्ड पर एक बटन पर क्लिक करें - एक मोडल फॉर्म खोलता है - जिसे हमें एमडीआई चाइल्ड फॉर्म (चरण 2 में खोला गया) के केंद्र में खोलने की जरूरत है
तो केंद्र 1 में मोडल फॉर्म खोलने के लिए मैंने जो स्पष्ट समाधान किया था वह
हैTestModalForm obj = new TestModalForm()
obj.StartPosition = FormStartPosition.CenterParent;
obj.showdialog(this);
लेकिन उपरोक्त समाधान काम नहीं करता क्योंकि मोडल फॉर्म हमेशा एमडीआई फॉर्म को अपने माता-पिता के रूप में मानता है। 2 समाधान के लिए तो मैं कसरत: कि में मैं मोडल विंडो के फार्म लोड में विधि लिखा था के रूप में नीचे के केंद्र में स्थित करने के लिए:
private void MakeWinInCenter()
{
if (this.Owner != null)
{
Form objParent = null;
int TopbarHeight = 0;
if (this.Owner.IsMdiContainer && this.Owner.ActiveMdiChild != null)
{
objParent = this.Owner.ActiveMdiChild;
TopbarHeight = GetTopbarHeight(this.Owner);
}
else
objParent = this.Owner;
Point p = new Point((objParent.Width - this.Width)/2, (objParent.Height - this.Height)/2);
p.X += objParent.Location.X;
p.Y += TopbarHeight + objParent.Location.Y;
this.Location = p;
}
else
{
//If owner is Null then, we have reference of MDIForm in Startup Class - use that ref and opens win in center of MDI
if (Startup.MDIObj != null)
{
this.Left = Convert.ToInt32((Startup.MDIObj.Width - this.Width)/2);
this.Top = Convert.ToInt32((Startup.MDIObj.Height - this.Height)/2);
}
}
}
private int GetTopbarHeight(Form MDIForm)
{
int TopbarHeight = 0;
MdiClient objMDIClient = null;
foreach (Control ctl in MDIForm.Controls)
{
if (ctl is MdiClient)
{
objMDIClient = ctl as MdiClient;
break;
}
}
if (objMDIClient != null)
{
TopbarHeight = MDIForm.Height - objMDIClient.Size.Height;
}
return TopbarHeight;
}
समाधान ऊपर सही काम करता है एमडीआई प्रपत्र बड़े दृश्य के रूप में खोला जाता है जब। लेकिन जब हमने एमडीआई फॉर्म (यानी अधिकतम फॉर्म में नहीं) का आकार बदलकर या अन्य स्क्रीन पर एमडीआई फॉर्म को स्थानांतरित करके चेक किया - कई स्क्रीनों के मामले में, उपरोक्त समाधान काम नहीं कर रहा है और एमडीआई के रूप में मोडल फॉर्म नहीं खोलता है बाल फार्म
भी this Question पर देखा लेकिन यह मेरी समस्या के लिए सहायक नहीं है।
क्या किसी को भी समस्या का समाधान करने के लिए कोई सुझाव या समाधान हो सकता है।
धन्यवाद
अगर (यह। एमडीपीेंट! = शून्य) ... –
हैलो डेविड, टेस्टमोडालफॉर्म.शॉडियलोग (यह। एमडीआईपीेंट); यह काम नहीं कर रहा है। यह भी। MdiParent शून्य देता है ताकि यह एमडीआई के केंद्र में प्रदर्शित हो - जो आवश्यक नहीं है। मुझे दूसरे एमडीआई चाइल्ड के केंद्र में तीसरी मोडल विंडो खोलनी होगी। प्रश्न की शुरुआत में इसका तीसरा बिंदु। – Shah