2011-07-07 25 views
44

İletişim kutusunun ana formunun ortasında gösterilmesi karmaşa oldu. İşte bir diyaloğu göstermek için bir yöntem.İletişim İletişim kutusunun üst tarafındaki iletişim kutusunu göster

Ben ortalamak için onun üst konumlandırma ama DialogBox

private void OpenForm(Object point, Object height, Object width) 
{ 
    FormLoading frm = new FormLoading(); 
    Point temp = (Point)point; 
    Point location = new Point(temp.X + (int)((int)width)/2, 
           temp.Y + (int)((int)height)/2); 
    frm.Location = location; 
    frm.ShowDialog(); 
} 

private void btnView_Click(object sender, EventArgs e) 
{ 
    try 
    {      
     ThreadStart starter= delegate { OpenForm(currentScreenLocation, 
               this.Height, this.Width); }; 
     Thread t = new Thread(starter); 
     t.Start(); 
     ////// Some functionality here... 
     t.Abort(); 
    } 
    catch (Exception) 
    { 
    } 
} 
+2

Ayrıca çoklu okumaya da dikkat ederim. Denetimin özellikleri (en azından Kullanıcı arabirimi ile ilgilenenler) yalnızca oluşturuldukları iş parçacığından değiştirilebilir. Burada daha büyük bir resim görmüyorum, bu yüzden her bir formu neden kendi başlığında oluşturduğunuzu bilmiyorum, fakat bunu aklınızda bulundurun. –

cevap

80

Sen Form.StartPosition özelliğini kontrol etmek isteyebilirsiniz ortalamak mümkün değil. çizgisinde

http://msdn.microsoft.com/en-us/library/system.windows.forms.form.startposition.aspx

şey: tabii

private void OpenForm(Form parent) 
{ 
    FormLoading frm = new FormLoading(); 
    frm.Parent = parent; 
    frm.StartPosition = FormStartPosition.CenterParent; 
    frm.ShowDialog(); 
} 

Bu formun üst ayar gerektirir. Eğer keyfi bir konuma kurmak istiyorsanız

+0

frm.StartPosition = FormStartPosition.Manual; frm.Location = location; Kullandım ve benim için çalıştı :) –

+0

FormStartPosition.CenterParent olarak ayarlamak sizin için matematik yapar. Ama sanırım merkezden daha karmaşık bir şey yapmayı planlıyorsanız kodunuzu korumak istersiniz. Sorunu çözdüğüne sevindim. –

+0

FormStartPosition.CenterParent benim için çalışmadı. Ben sadece onu merkezlemek istiyorum. Ama sağladığınız bağlantı benim için bir anahtardı. Bunun için teşekkürler –

10
form1.StartPosition = FormStartPosition.CenterScreen; 

Özel bir MessageBox yapıyorsanız bu

FormLoading frm = new FormLoading(); 
Point location = new Point(300, 400); 
frm.StartPosition = System.Windows.Forms.FormStartPosition.Manual; 
frm.Location = location; 
frm.ShowDialog(); 
1
NewForm.Show(); 

NewForm.Top = (this.Top + (this.Height/2)) - NewForm.Height/2; 
NewForm.Left = (this.Left + (this.Width/2)) - NewForm.Width/2; 
1

kullanabilirsiniz, ek olarak

İlgili konular