Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB .NET > Правильно закрыть форму


Автор: gta4kv 24.10.2006, 13:05
Сабж, как только не пробывал, не получаеться

Делаю так :
Код


Private Sub frm_play_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles frm_play.Click

        Me.Close()
        Game.Show()

    End Sub



Закрываються все формы.


Делаю в другой форме, тоже  закрываються  - все.


Мне нужно сделать так что бы Form1 закрывалась. а Game открывалась. Hide () - не предлагать smile


Автор: ivashkanet 24.10.2006, 13:30
У тебя форм1 стоит как главная форма приложения и когда она закрывается, все ресурсы приложения (как формы, например) сразу освобождаются. 
Вот так.

Решить можно так:
Добавляешь такой вот класс в проект:
Код

Public Class Program
    Public Shared Sub Main()
        Application.EnableVisualStyles()

        Dim f As New Form1()
        f.Show()

        While Not f.IsDisposed
            Application.DoEvents()
        End While
    End Sub
End Class


А потом в свойствах проекта выбираешь этот класс как стартовый.
Тута можно любую логику написать

Автор: gta4kv 24.10.2006, 13:39
А как выбирать класс как стартовый? O_o

Автор: ivashkanet 24.10.2006, 13:46
Цитата(gta4kv @  24.10.2006,  13:39 Найти цитируемый пост)
А как выбирать класс как стартовый?

Сначала скомпиль сборку, а потом уже в свойствах на вкладке Application можно выбрать Startup object

Автор: gta4kv 24.10.2006, 13:53
Убей меня ,есть только Startup Form


ps. Studio 2005

Автор: ivashkanet 24.10.2006, 13:59
Убери галку "Enable application framework"
P.S. Это нэймспэйс My

Автор: gta4kv 24.10.2006, 14:40
Даже в Startup object незя выброть класс, ну и фиг.


Сёрно мне без framework'ov не надоsmile

Автор: ivashkanet 24.10.2006, 14:46
gta4kv, тогда только Hide для формы  smile 

Автор: thomas 24.10.2006, 15:55
Цитата(ivashkanet @ 24.10.2006,  13:59)
Убери галку "Enable application framework"
P.S. Это нэймспэйс My

У него наверное 2003 студия. Му появилось в 2005.

Автор: ivashkanet 24.10.2006, 16:04
Цитата(gta4kv @  24.10.2006,  13:53 Найти цитируемый пост)
ps. Studio 2005


Автор: thomas 24.10.2006, 16:08
 Упс ...   smile 
Sorry!

Автор: gta4kv 24.10.2006, 16:36
Цитата(ivashkanet @ 24.10.2006,  14:46)
gta4kv, тогда только Hide для формы  smile

Из этого вытикает вопрос, а можно кнопочке "X(крестик)", присвоить значение Close (), ибо когда закрываешь крестиком, HIDE'ный объект продолжает висеть в системе.

Автор: ivashkanet 24.10.2006, 16:48
Цитата(gta4kv @  24.10.2006,  16:36 Найти цитируемый пост)
кнопочке "X(крестик)"

Кнопочка "крестик" находится на дочерней форме?

Если так, то можно сделать так:

При открытии дочернеей формы сохраняем ссылку на родительскую:
Код

Private Sub frm_play_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles frm_play.Click
        Me.Hide()
        Game._parentForm = Me
        Game.Show()
    End Sub

Естественно, нужно позаботиться о создании поля _parentForm в классе Game.

Далее при закрытии дочерней формы:
Код

Private Sub Game_Close(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Me.Close
         Me._parentForm.Close()
End Sub


Вуаля  smile 

Автор: gta4kv 24.10.2006, 17:01
Цитата(ivashkanet @ 24.10.2006,  16:48)
Кнопочка "крестик" находится на дочерней форме?

Гы, кнопочка крестик находиться, там же где и два окошечка (одно) и нижняя черта)


Тобишь в тайтле так сказать)

Автор: ivashkanet 24.10.2006, 17:07
gta4kv, что кнопочка "крестик" --- это кнопка закрытия приложения я разобрался  smile 
Я спрашивал про ее хозяина. Это окно Game?

Автор: gta4kv 24.10.2006, 17:12
да smile

Автор: ivashkanet 24.10.2006, 17:31
тогда смотри код двумя постами выше

Автор: Exception 24.10.2006, 18:21
Не проще ли удалить весь designer-generated код? Вместе с application framework?

Автор: ivashkanet 24.10.2006, 18:23
Exception, это ты к чему?

Автор: Exception 24.10.2006, 19:12
Как это к чему smile ? К теме. Вместо того, чтобы ловить нажатия крестиков, просто отключить этот фреймворк нафиг.

Автор: ivashkanet 24.10.2006, 20:17
Цитата(Exception @  24.10.2006,  19:12 Найти цитируемый пост)
просто отключить этот фреймворк нафиг.

И что это даст?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)