Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Windows Forms
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.08.2013, 01:59   #1
MIKE11IPME
Форумчанин
 
Регистрация: 03.05.2010
Сообщений: 159
По умолчанию Как закрыть форму?

собственно сабж , делаю так
Код:
private void toolStripMenuItem1_Click(object sender, EventArgs e)
        {
            Form f=new Form1();
            f.Close();            
        }
но ноль реакции
зато с this.Close(); все работает
как по другому это можно записать ? как передать управление формой переменной , ведь мы же создали ссылочную переменную, но через неё методы не выполняются.
MIKE11IPME вне форума Ответить с цитированием
Старый 06.08.2013, 07:16   #2
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,876
По умолчанию

Цитата:
Сообщение от MIKE11IPME Посмотреть сообщение
через неё методы не выполняются.
неверно
Цитата:
Сообщение от MIKE11IPME Посмотреть сообщение
Form f=new Form1(); // создали некий НОВЫЙ экземпляр формы
f.Close(); // и тут же его закрыли! ( а ещё его тут сборщик убьёт) [/CODE]
Цитата:
Сообщение от MIKE11IPME Посмотреть сообщение
как передать управление формой переменной
Зачем передавать управление формой некой переменной, если в this и так содержится указатель на форму, метод которой исполняется ?

Ответ на вопрос
Цитата:
Сообщение от MIKE11IPME Посмотреть сообщение
Как закрыть форму?
зато с this.Close(); все работает
Если же Вам нужно нечто другое, потрудитесь изложить вопрос понятно, а то сейчас это выглядит
"-коля, а как тебя зовут? -коля. -а сколько лет пьяному ёжику?"
phomm вне форума Ответить с цитированием
Старый 06.08.2013, 11:05   #3
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

Phomm, у человека нелегкий переходный период с делфи на шарп
MIKE11IPME:
Цитата:
Form f=new Form1(); // Здесь создается НОВЫЙ экземпляр класса Form1,
// не имеющий вообще никакого отношения к вашей текущей форме
f.Close(); // Здесь, соответственно, вызывается метод "закрыть" для новой формы (которая к тому же вообще не отображена на экране
Привыкайте мыслить по новому, и немного освежите знания ООП
Благодарить в репутацию. Проклинать — туда же

Последний раз редактировалось Luuzuk; 06.08.2013 в 11:07.
Luuzuk вне форума Ответить с цитированием
Старый 06.08.2013, 12:38   #4
MIKE11IPME
Форумчанин
 
Регистрация: 03.05.2010
Сообщений: 159
По умолчанию

Цитата:
Сообщение от phomm Посмотреть сообщение
неверно



Зачем передавать управление формой некой переменной, если в this и так содержится указатель на форму, метод которой исполняется ?

Ответ на вопрос


Если же Вам нужно нечто другое, потрудитесь изложить вопрос понятно, а то сейчас это выглядит
"-коля, а как тебя зовут? -коля. -а сколько лет пьяному ёжику?"
спасибо , но относительно зачем - чтоб знать как
MIKE11IPME вне форума Ответить с цитированием
Старый 06.08.2013, 12:42   #5
MIKE11IPME
Форумчанин
 
Регистрация: 03.05.2010
Сообщений: 159
По умолчанию

Цитата:
Сообщение от Luuzuk Посмотреть сообщение
Phomm, у человека нелегкий переходный период с делфи на шарп
MIKE11IPME:

Привыкайте мыслить по новому, и немного освежите знания ООП
Да тут не по новому мыслить, а просто надо знать о чем думать
Вторая половина фразы мне всегда не понятна , как можно освежить знания ООП?
MIKE11IPME вне форума Ответить с цитированием
Старый 06.08.2013, 13:53   #6
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

Цитата:
как можно освежить знания ООП?
Если с объектно-ориентированным программированием уже немного знакомы, то следует вспомнить различия между классом и объектом (экземпляром класса).
А если с ООП не сталкивались, то действительно никак, только учить
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Старый 06.08.2013, 14:22   #7
MIKE11IPME
Форумчанин
 
Регистрация: 03.05.2010
Сообщений: 159
По умолчанию

Цитата:
Сообщение от Luuzuk Посмотреть сообщение
Если с объектно-ориентированным программированием уже немного знакомы, то следует вспомнить различия между классом и объектом (экземпляром класса).
А если с ООП не сталкивались, то действительно никак, только учить
Нус я предполагал , что форм1 - объект класса форм и хотел вызвать метод, но как оказалось к вызываемому объекту я могу обращаться только через ключевое слово this

Тут еще попробовал сделать и тоже не выходит
Код:
private void notifyIcon1_Click(object sender, EventArgs e)
        {
            if (MouseButtons==MouseButtons.Left) 
            {
                this.WindowState=FormWindowState.Normal;
            }
        }
с начало окно при запуске "минимизировано" , а восстановить подобным образом не могу. Возможно обработчик событий ,в котором занесено заранее обработка нажатия на правую клавишу , как-то конфликтует , либо я чего-то не понимаю.(конечно в событиях элемента есть еще событие MouseClick , но результат тот же , либо ошибка в условии оператора if)
MIKE11IPME вне форума Ответить с цитированием
Старый 07.08.2013, 07:20   #8
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,876
По умолчанию

На мой взгляд
Код:
if (MouseButtons==MouseButtons.Left)
вообще не может компилироваться
Вы что-то недоговариваете, на мой взгляд это XYZ
Подобные события обрабатываются с обращением к переданному в обработчик события объекту EventArgs e, в нём (при соответстветствующем приведении/касте) будут лежать нужные параметры события, в том числе какая кнопка вызвала клик.
А вообще легко проверить работу, просто убрав if и оставив безусловную установку виндоустейта, а после этого, убедившись что работает, уже городить условия.

Цитата:
я предполагал , что форм1 - объект класса форм
неверно, в шарпе вообще нет глобальных переменных, как оные делает дельфи для авто-создаваемых форм, и Form1 это не объект , а именно класс (а в общем случае применения new - тип[не обязательно класс]), это видно по слову new, которое вы ставите перед Form1 , грубо говоря запись
Form f=new Form1();
говорит следующее : объекту f типа Form присвоить _новосозданный_ объект типа Form1
phomm вне форума Ответить с цитированием
Старый 11.08.2013, 02:07   #9
MIKE11IPME
Форумчанин
 
Регистрация: 03.05.2010
Сообщений: 159
По умолчанию

Цитата:
Сообщение от phomm Посмотреть сообщение
На мой взгляд
Код:
if (MouseButtons==MouseButtons.Left)
вообще не может компилироваться
Вы что-то недоговариваете, на мой взгляд это XYZ
Подобные события обрабатываются с обращением к переданному в обработчик события объекту EventArgs e, в нём (при соответстветствующем приведении/касте) будут лежать нужные параметры события, в том числе какая кнопка вызвала клик.
А вообще легко проверить работу, просто убрав if и оставив безусловную установку виндоустейта, а после этого, убедившись что работает, уже городить условия.


неверно, в шарпе вообще нет глобальных переменных, как оные делает дельфи для авто-создаваемых форм, и Form1 это не объект , а именно класс (а в общем случае применения new - тип[не обязательно класс]), это видно по слову new, которое вы ставите перед Form1 , грубо говоря запись
Form f=new Form1();
говорит следующее : объекту f типа Form присвоить _новосозданный_ объект типа Form1
Ясненько , я думал форм1 есть уже существующий объект класса форм, а не его тип (на ум приходит только сравнение с - подгруппа группы...просто как-то так воспринимаю информацию , через теорию чисел)
Относительно первого : спасибо , собственно все что надо было мне сделать , это узнать какая клавиша была нажата при взаимодействии с соотв объектом на форме. (кстати компилируется ну по крайней мере в вс12).

Глобальные вроде как есть , объявляются как паблик+статик (вроде, могу ошибаться)

Последний раз редактировалось MIKE11IPME; 11.08.2013 в 02:29.
MIKE11IPME вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Закрыть вторую форму WhiteForge Общие вопросы Delphi 19 03.11.2012 22:04
Закрыть и открыть форму Swatch Microsoft Office Access 1 31.05.2010 23:04
Как закрыть форму индикатора процесса после завершения цикла? SkAndrew Общие вопросы Delphi 11 03.02.2010 07:39
Как закрыть форму при показе RIO Общие вопросы Delphi 4 28.08.2009 07:54
Как закрыть MDIChild форму по нажатию на кнопку AndreyF Общие вопросы Delphi 4 11.07.2009 16:26