Imports System.Reflection
Public Sub ResizeDescriptionArea(grid As PropertyGrid, lines As Integer)
Try
Dim info = grid.[GetType]().GetProperty("Controls")
Dim collection = DirectCast(info.GetValue(grid, Nothing), Control.ControlCollection)
For Each control As Object In collection
Dim type = control.[GetType]()
If "DocComment" = type.Name Then
Const Flags As BindingFlags = BindingFlags.Instance Or BindingFlags.NonPublic
Dim field = type.BaseType.GetField("userSized", Flags)
field.SetValue(control, True)
info = type.GetProperty("Lines")
info.SetValue(control, lines, Nothing)
grid.HelpVisible = True
Exit For
End If
Next
Catch ex As Exception
Trace.WriteLine(ex)
End Try
End Sub
4条答案
按热度按时间ffx8fchx1#
此代码基于The Code Project中的一篇文章(http://www.codeproject.com/KB/grid/GridDescriptionHeight.aspx),其中引入了两个修复和一些清理。
我在自己的项目中使用过对你来说应该没问题。
1cklez4t2#
您不能使用PropertyGrid控件公开的公共方法和属性来执行此操作,或者至少我找不到任何有用的东西。
您可以尝试使用反射来获取显示设置或说明的属性网格的子控件,并尝试以编程方式设置它们的高度;我猜拆分器只是停靠,设置它的位置不会改变任何东西。
使用调试器查看PropertyGrid的非公共成员应有助于您了解控件的内部结构。
1yjd4xko3#
这里是Matthew Ferreira在VB .NET中的解决方案。谢谢Matthew,工作很愉快!
yduiuuwa4#
我必须做一些调整才能让它工作。下面的代码适用于.NET 6: