Страница: 1 |
Страница: 1 |
Вопрос: Инициализация формы
Добавлено: 27.03.06 21:58
Автор вопроса: Константин
Скажите пожалуйста, как правильно показать форму как реакцию на событие menuItem1_Click (т.е. на нажатие пункта меню)
пробовал так:
И так:
Ни то, ни другое не работает, хотя синтаксической ошибки нет :(
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #1
Добавлено: 28.03.06 01:29
MyForm.Show()
Номер ответа: 2
Автор ответа:
Fever
Вопросов: 60
Ответов: 808
Профиль | | #2
Добавлено: 31.03.06 17:48
Перешел с VB6. За километр видно. Как же может быть создан КЛАСС(не экземпляр)
Номер ответа: 3
Автор ответа:
Fever
Вопросов: 60
Ответов: 808
Профиль | | #3
Добавлено: 31.03.06 17:49
Перешел с VB6. За километр видно. Как же может быть создан КЛАСС(не экземпляр)
Номер ответа: 4
Автор ответа:
mich
ICQ: 261800349
Вопросов: 19
Ответов: 148
Web-сайт:
Профиль | | #4
Добавлено: 31.03.06 19:25
Static f As New Form2
Try
f.Show()
Catch ex As Exception
f = New Form2
f.Show()
End Try
End Sub
Номер ответа: 5
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #5
Добавлено: 31.03.06 22:36
mich,
А зачем у тебя переменная объявлена как Static? тебе что, ресурсов не жалко?
И потом.. помещать код создания формы в блок Catch тоже на мой взгляд не совсем правильно. А если в процедуре Load формы будет ошибка? И пусть даже та ошибка будет обработана.. в любом случае на строке f.Show() ты получишь Unhandler Exeption и прога упадет..
Номер ответа: 6
Автор ответа:
mich
ICQ: 261800349
Вопросов: 19
Ответов: 148
Web-сайт:
Профиль | | #6
Добавлено: 02.04.06 00:27
Eros, а как избавится от повторного запуска формы если форма уже запущена?
Номер ответа: 7
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #7
Добавлено: 02.04.06 02:15
Тут есть масса вариантов, например можно перебрать коллекцию Application.OpenForms и поискать нужную форму там.. по названию формы, по заголовку, по типу... да как угодно. Либо,если у тебя MDI приложение, там тоже есть своя коллекция открытых дочерних форм. Код приводить не буду, он более чем простой.. сам с легкостью его напишешь..
Лично я предпочитаю другой вариант. Я практически в любом проекте всегда делаю так называемую базовую форму, от которой наследую все остальные формы проекта.В этой, единой для всех форме, я устанавливают общий для всех шрифт,там же размещаю общие Shared ф-ции и прочую мелочь.. В ней же я делаю ReadOnly свойство - ToolBoxItem, которое содержит ссылку на кнопку панели инструментов или на пункт меню,по которому вызывается форма. И делаю дополнительный конструктор в котором передаю ссылку на эту кнопку или меню. А далее все просто.. в Load проверяем эту ссылку на Nothing и делаем Enable=False, ну и в FormClose соответственно наоборот, делаем кнопку активной. Таким образом мы блокируем кнопку или пункт меню до того момента пока форма не будет закрыта.. И что самое ценное, так это то,что это свойство будет работать во всех унаследованных формах, поэтому его надо будет написать только 1 раз, и вызывать соответствующий конструктор формы.. Если же форма вызывается не по клику на кнопку или меню а из кода, то вызываешь обычный конструктор без ссылки.. вот и все.