Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Инициализация формы Добавлено: 27.03.06 21:58  

Автор вопроса:  Константин
Скажите пожалуйста, как правильно показать форму как реакцию на событие menuItem1_Click (т.е. на нажатие пункта меню)
пробовал так:
frmDialog.Show()

И так:
frmDialog.Initialize()

Ни то, ни другое не работает, хотя синтаксической ошибки нет :(

Ответить

  Ответы Всего ответов: 7  

Номер ответа: 1
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #1 Добавлено: 28.03.06 01:29
        Dim MyForm As New frmDialog
        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-сайт: belkyokushin.net
 Профиль | | #4
Добавлено: 31.03.06 19:25
    Private Sub MenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem2.Click
        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-сайт: belkyokushin.net
 Профиль | | #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 раз, и вызывать соответствующий конструктор формы.. Если же форма вызывается не по клику на кнопку или меню а из кода, то вызываешь обычный конструктор без ссылки.. вот и все.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам