VB.NET доступ winforms непубличный член - PullRequest
0 голосов
/ 04 октября 2018

В моем приложении, которое использует модель интерфейса с несколькими документами, у меня есть одно из окон, которое постоянно обновляется в асинхронном режиме.И когда пользовательский интерфейс запускает другое окно (например, мастер), вновь созданное окно может в некоторых случаях потерять фокус (не смог воспроизвести это поведение, но об этом сообщили многие).

Я думаю, что это можетбыть связанным с тем фактом, что когда асинхронная функция завершает работу в главном окне, она фактически возвращает фокус обратно (но, по-видимому, это происходит только тогда, когда окно мастера выполняет некоторые вычисления).

Я планировал отменить обновления таймера в главном окне.окно, когда оно не активно.Но столкнулся с проблемой невозможности доступа к свойству «My.Active».

Я вижу его в отладке, но не могу получить к нему доступ из кода: это частичный скриншот компонента «Мой»:

This is a partial screenshot of

Я, должно быть, упускаю что-то простое, но не смог понять это пару часов.

1 Ответ

0 голосов
/ 04 октября 2018

В итоге я использовал Reflection, чтобы получить собственность, как это было предложено в комментариях к моему вопросу.Это не красиво, но работает для моего текущего сценария.

Вот решение:

Dim prop As System.Reflection.PropertyInfo = Me.GetType().GetProperty("Active",
      System.Reflection.BindingFlags.NonPublic Or
      System.Reflection.BindingFlags.Instance)
Dim value As Boolean = prop.GetValue(Me)
...