Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Как узнать о смене активного окна в MDI программе? Добавлено: 11.09.02 19:40  

Автор вопроса:  Jury

Hi All!

Есть 2 вопроса по работе с окнами:

1. Как узнать о смене активного окна в MDI программе?

2. Можно ли одно из окон сделать особым - чтобы оно не фигурировало в меню окон, не становилось активтым но всякие кнопки на нем работали. Т.е. надо сделать что-то типа панели инструментов?

Jury

Ответить

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

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



ICQ: 170668998 

Вопросов: 1
Ответов: 5
 Web-сайт: lightknight.da.ru/
 Профиль | | #1
Добавлено: 12.09.02 07:34

Чтобы получить активное окно, используй frmMDI.ActiveForm, где frmMDI - это родительская форма. Например, чтобы вставить текст из Буфера обмена в Textbox на активной в данный момент форме, используй следующий код:

 

Private Sub Paste()

    frmMDI.ActiveForm.Text1.SelText = Clipboard.GetText()

End Sub

где frmMDI - родительская форма, Text1 - наш Textbox

Ответить

Номер ответа: 2
Автор ответа:
 Jury



Вопросов: 14
Ответов: 12
 Профиль | | #2 Добавлено: 12.09.02 12:59

Работать с активным окном я научился. Мне надо чтобы при смене активного окна в "особом" окне меня лось состояние кнопок и текстбоксов. Вериант с периодическим получением в цикле активного окна понятен. Но может есть какое событие, чтобы не крутить лишний цикл?

Jury

Ответить

Номер ответа: 3
Автор ответа:
 MAGNUS



Вопросов: 12
Ответов: 430
 Профиль | | #3 Добавлено: 12.09.02 13:14

Ты дочерние формы выгружаешь или просто скрываешь?

Если выгружаешь то используй QueryUnload формы для всеч изменений. А если скрываешь то LostFocus,GotFocus прекрасно работают.

Ловишь GotFocus, проверяешь какая форма и по ней грузи контроли, проверку лучше сделать жерез Select... Case.

Удачи!

Ответить

Номер ответа: 4
Автор ответа:
 Jury



Вопросов: 14
Ответов: 12
 Профиль | | #4 Добавлено: 12.09.02 18:58

Что-то я не пойму. Судя по хэлпам мне надо ловить событие
WindowEvents_WindowActivated()
но у меня это что-то не получает

Если у меня есть массив Child форм Frm(i) то как и где мне ловить это событие? В Родительской форме Form1 или в каждой Child? Ьщжет я с синтаксисом что напутал - надо в скобки что-либо передавать?

Jury

Ответить

Номер ответа: 5
Автор ответа:
 MAGNUS



Вопросов: 12
Ответов: 430
 Профиль | | #5 Добавлено: 13.09.02 14:15

Конечно же дочерние окна ловить надо. Точенее одно. Прототип из которого создаеш остальные. А там уже проверяй индекс и реагируй на него соответственно.

Ответить

Номер ответа: 6
Автор ответа:
 Jury



Вопросов: 14
Ответов: 12
 Профиль | | #6 Добавлено: 16.09.02 15:02

То-ли я тупой, то ли...

При попытке вставить пример:

Public Sub WindowEvents_WindowActivated(ByVal GotFocus As EnvDTE.Window, ByVal LostFocus As EnvDTE.Window) Handles WindowEvents.WindowActivated

MsgBox("test")

End Sub

Выдается:

D:\Oscilloscope\NewProject\MultiScope\MultiScope\Form1.vb(91): Type 'EnvDTE.Window' is not defined.

D:\Oscilloscope\NewProject\MultiScope\MultiScope\Form1.vb(91):

Handles clause requires a WithEvents variable. - это на тему WindowEvents.WindowActivated

Так что даже не знаю куда копать.

Jury

Ответить

Страница: 1 |

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



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