Вопрос

У меня есть диалог в GTK#, который открывается щелчком мыши, и после нажатия кнопки в нем диалог должен снова закрыться.Должен ли я вызывать в окне оба метода Hide() и Destroy()?

Вот мой код для запуска диалога:

protected virtual void ConfigureDialogue (object sender, System.EventArgs e)
{
    MyConfigWindow myConfWindow = new MyConfigWindow ();
    this.Sensitive = false;
    myConfWindow.Run ();
    this.Sensitive = true;
}

А вот соответствующая часть окна конфигурации:

public partial class MyConfigWindow  : Gtk.Dialog
{

    public MyConfigWindow ()
    {
        this.Build();
    }

    protected virtual void onSave (object sender, System.EventArgs e)
    {
        this.Hide();
        this.Destroy ();
    }
}

Когда я только звоню this.Destroy () главное окно снова становится чувствительным (поэтому myConfWindow.Run () закончился), но диалог все еще виден.

Это было полезно?

Решение

Вам не хватает вызова уничтожения в процедуре ConfigurationDialog...

  this.Sensitive = false; 
  result = myConfWindow.run();
  if (result == gtk.RESPONSE_CLOSE:)
    myConfWindow.destroy();
  this.Sensitive = true;

Надеюсь, это поможет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top