zoukankan      html  css  js  c++  java
  • VS.NET Addin在Design time获取控件值

    客户要写一个Visual Studio .NET的Add-in,需要在design time获取form上控件的值,以下是用Reflection的做法

         

           Dim win As Window = applicationObject.ActiveWindow
                
    Dim d As ComponentModel.Design.IDesignerHost = win.Object
                iss 
    = d.GetService(GetType(ComponentModel.Design.ISelectionService))
                
    Dim c As ComponentModel.Component = iss.PrimarySelection
                
    Dim pi As Reflection.PropertyInfo = CObj(c).GetType().GetProperty("Visible")
                
                
    Dim val As Object = pi.GetValue(c, Nothing)
                
    Dim tc As System.ComponentModel.TypeConverter = ComponentModel.TypeDescriptor.GetConverter(val)
                
    MsgBox(c.Site.Name & "." & pi.Name & " = " & tc.ConvertToString(val))


    这样做有一个问题,当我要取TextBox.Visible这类属性的时候,返回值永远为true,因为reflect的是designer中的textbox对象,它的visible值永远为true。正确的做法是通过PropertyDescriptorCollection来读取Properties window里面的值,代码如下:

      
       
               
    'query Properties
                Dim properties As System.ComponentModel.PropertyDescriptorCollection
                properties 
    = System.ComponentModel.TypeDescriptor.GetProperties(c)
                
    Dim prop As System.ComponentModel.PropertyDescriptor
                prop 
    = properties("Visible")
                
    MsgBox(c.Site.Name & "." & prop.Name & " = " & prop.GetValue(c))

    本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利
  • 相关阅读:
    HTML基础——网站友情链接显示页面
    HTML基础——网站图片显示页面
    HTML基础——网站信息显示页面
    Java数据库连接——PreparedStatement的使用
    Java数据库连接——jdbc-odbc桥连接方式及汉字乱码问题
    Java文件(io)编程——简易记事本开发
    Java文件(io)编程——文件字符流的使用
    idea ---- 打开的文件多行显示
    idea ---- 代码提示大小写区分
    idea ---- 显示行号 和方法分隔符
  • 原文地址:https://www.cnblogs.com/roger/p/132525.html
Copyright © 2011-2022 走看看