Закрыть форму в C # [дубликат]

Посмотрите на вторую строку окна сообщения. Там вы можете увидеть, какая Java-среда фактически запущена. Мой был внезапно C: \ ProgramData \ Oracle \ Java \ javapath \ javaw.exe. Это произошло после того, как я установил «chrome java updater» (браузер Chrome застонал: «ваш java устарел, вам нужно обновить ...»).

До этого «обновления хром java» мое затмение (luna jee x64) началось без ошибок. Подойдя ближе к фону, я обнаружил следующее: chrome java updater (notabene, начатый с сайта Oracle) добавил C: \ ProgramData \ Oracle \ Java \ javapath перед env var PATH. Он содержит три символических ссылки на новейшую java 8 JRE-установку в (x86) папку программы -> следовательно, на 32-битную java JRE. Oracle заменяет Java8 старой техникой, имеющей символические ссылки в system32 (64 бит) соответственно. SysWOW64 (32 бит).

7
задан Jonathan Leffler 24 December 2013 в 01:12
поделиться

7 ответов

Вам нужен фактический экземпляр WindowSettings, открытый, а не новый.

В настоящее время вы создаете новый экземпляр WindowSettings и вызываете Close. Это не делает ничего, потому что этот новый экземпляр никогда не показывался.

Вместо этого, показывая DialogSettingsCancel, установите текущий экземпляр WindowSettings в качестве родителя.

Что-то вроде это:

В WindowSettings:

private void showDialogSettings_Click(object sender, EventArgs e)
{
    var dialogSettingsCancel = new DialogSettingsCancel();
    dialogSettingsCancel.OwningWindowSettings = this;
    dialogSettingsCancel.Show();
}

В DialogSettingsCancel:

public WindowSettings OwningWindowSettings { get; set; }

private void button1_Click(object sender, EventArgs e)
{
    this.Close();
    if(OwningWindowSettings != null)
        OwningWindowSettings.Close();
}

Этот подход учитывает, что a DialogSettingsCancel потенциально может быть открыт без WindowsSettings в качестве родительского.

Если оба из них всегда подключены, вместо этого вы должны использовать параметр конструктора:

В WindowSettings:

private void showDialogSettings_Click(object sender, EventArgs e)
{
    var dialogSettingsCancel = new DialogSettingsCancel(this);
    dialogSettingsCancel.Show();
}

В DialogSettingsCancel:

WindowSettings _owningWindowSettings;

public DialogSettingsCancel(WindowSettings owningWindowSettings)
{
    if(owningWindowSettings == null)
        throw new ArgumentNullException("owningWindowSettings");

    _owningWindowSettings = owningWindowSettings;
}

private void button1_Click(object sender, EventArgs e)
{
    this.Close();
    _owningWindowSettings.Close();
}
7
ответ дан Daniel Hilgarth 15 August 2018 в 14:47
поделиться

отправьте WindowSettings в качестве параметра конструктора диалогового окна DialogSettingsCancel, а затем нажмите кнопку button1_Click, когда да, нажмите кнопку вызова метода закрытия обоих из них.

public class DialogSettingsCancel
{
    WindowSettings parent;

    public DialogSettingsCancel(WindowSettings settings)
    {
        this.parent = settings;        
    }

    private void button1_Click(object sender, EventArgs e)
    {
        //Code to trigger when the "Yes"-button is pressed.
        this.parent.Close();
        this.Close();
    }
}
0
ответ дан Hossein Narimani Rad 15 August 2018 в 14:47
поделиться

, например, если вы хотите закрыть форму окна при выполнении действия, есть два способа сделать это

1. Закрыть его непосредственно

Form1 f=new Form1();
f.close(); //u can use below comment also
//this.close();

2 . Мы также можем скрыть форму, не закрывая ее

 private void button1_Click(object sender, EventArgs e)
    {
        Form1 f1 = new Form1();
        Form2 f2 = new Form2();
        int flag = 0;
        string u, p;
        u = textBox1.Text;
        p = textBox2.Text;
        if(u=="username" && p=="pasword")
        {
            flag = 1;
        }
        else
        {
          MessageBox.Show("enter correct details");
        }
        if(flag==1)
        {
            f2.Show();
            this.Hide();
        }

    }
0
ответ дан Jaswanth Chilaka 15 August 2018 в 14:47
поделиться

Почему бы не использовать метод DialogResult для закрытия формы?

if(DialogSettingsCancel.ShowDialog() == DialogResult.Yes)
{
     this.close();
}

Для этого вам нужно будет сделать это в своей форме «WindowSettings», когда вы вызываете форму DialogSettingsCancel. Точно так же вы бы назвали OpenFileDialog или любую другую форму диалога.

3
ответ дан jforward5 15 August 2018 в 14:47
поделиться

Закрытие вашего экземпляра окна настроек сразу после его создания. Вам нужно сначала отобразить окно настроек, а затем ждать результата диалога. Если он вернется как отмененный, закройте окно. Например:

private void button1_Click(object sender, EventArgs e)
{
    Settings newSettingsWindow = new Settings();

    if (newSettingsWindow.ShowDialog() == DialogResult.Cancel)
    {
        newSettingsWindow.Close();
    }
}
2
ответ дан Logan G. 15 August 2018 в 14:47
поделиться
new WindowSettings();

Вы только что закрыли совершенно новый экземпляр формы, которая не была видна в первую очередь.

Вам нужно закрыть экземпляр оригинала формы приняв его как параметр конструктора и сохраняя его в поле.

6
ответ дан SLaks 15 August 2018 в 14:47
поделиться

Вы также можете закрыть приложение:

Application.Exit();

Он завершит процессы.

0
ответ дан user 15 August 2018 в 14:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: