C# 如何在父窗口上居中显示Gtk对话框
守则:C# 如何在父窗口上居中显示Gtk对话框,c#,gtk#,C#,Gtk#,守则: void btnSettings_Click(object obj, EventArgs args) { frmSettings dialogSettings = new frmSettings(); dialogSettings.Modal = true; dialogSettings.TransientFor = this; dialogSettings.Parent = this; di
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、Parent、ParentWindow属性,但它们都没有强制我的对话框显示在父(调用方)窗口的中心。思想?谢谢。更好的选择是在构造函数中设置对话框的父级:
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();
}
我解决了这个问题。在frmSettings构造函数中,在设置TransientFor之前,我有一个ShowAll。