2013-10-16 67 views
1

代碼:如何中心的Gtk對話框父窗口

void btnSettings_Click(object obj, EventArgs args) 
    { 
     frmSettings dialogSettings = new frmSettings(); 
     dialogSettings.Modal = true; 
     dialogSettings.TransientFor = this; 
     dialogSettings.Parent = this; 
     dialogSettings.ParentWindow = this.GdkWindow; 
     dialogSettings.SetPosition(Gtk.WindowPosition.CenterOnParent); 

     dialogSettings.Show(); 
    } 

我試過TransientFor,家長,ParentWindow屬性,但沒有人強迫我的對話框將顯示在父中心(主叫)窗口。想法?謝謝。

+0

我解決了這個問題。在frmSettings構造函數中,我設置了一個ShowAll,然後設置了TransientFor。 –

回答

0

一個更好的選擇是設置對話框的父構造函數:

public MyDialog (Gtk.Window parent) 
     : base ("My title", parent, Gtk.DialogFlags.Modal, new object[0]) 
{ 
    this.Build(); 
} 

public override void Dispose() 
{ 
    Destroy(); 
    base.Dispose(); 
} 

然後從父窗口調用它像這樣:

var dialog = new MyDialog(this); 
try 
{ 
    var response = (ResponseType) dialog.Run(); 
    //handle response... 
} 
finally 
{ 
    dialog.Dispose(); 
}