VB.NET 访问 winforms 非 public 成员
VB.NET access winforms non-public member
在我使用多文档界面模型的应用程序中,我有一个 windows 不断以异步方式刷新自身。当 UI 启动另一个 window(例如向导)时,新创建的 window 在某些情况下可能会失去焦点(无法重现此行为,但许多人报告).
我认为这可能与以下事实有关:当异步函数在 main window 中完成时,它实际上夺回了焦点(但显然它只发生在向导 window 进行一些计算时)。
我打算在主 window 不活动时取消计时器更新。但是遇到无法访问的问题 "My.Active" 属性.
我可以在调试中看到它,但无法从代码中访问它:
这是 "My" 组件的部分屏幕截图:
我一定是遗漏了一些简单的东西,但现在几个小时都没弄明白。
我最终使用反射来获得 属性 正如我的问题的评论中所建议的那样。它不是很漂亮,但它适用于我当前的场景。
解决方法如下:
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)
在我使用多文档界面模型的应用程序中,我有一个 windows 不断以异步方式刷新自身。当 UI 启动另一个 window(例如向导)时,新创建的 window 在某些情况下可能会失去焦点(无法重现此行为,但许多人报告).
我认为这可能与以下事实有关:当异步函数在 main window 中完成时,它实际上夺回了焦点(但显然它只发生在向导 window 进行一些计算时)。
我打算在主 window 不活动时取消计时器更新。但是遇到无法访问的问题 "My.Active" 属性.
我可以在调试中看到它,但无法从代码中访问它: 这是 "My" 组件的部分屏幕截图:
我一定是遗漏了一些简单的东西,但现在几个小时都没弄明白。
我最终使用反射来获得 属性 正如我的问题的评论中所建议的那样。它不是很漂亮,但它适用于我当前的场景。
解决方法如下:
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)