使用VB.Net我想自动调整DataGridView中标题的高度,所以我在填充数据后在表单加载期间调用AutoResizeColumnHeadersHeight。
该方法似乎没有做任何事情,但如果我执行以下操作,则可以正常工作: - 在grid.AutoResizeColumnHeadersHeight()上放置一个断点 - 在网格上打开快速表 - 扩展子属性 - 关闭quickwatch并点击F5继续处理
调整大小然后工作!
我认为原因是评估网格的一个属性会导致方法的行为不同。
是否有人知道我应该做的不同,或者解决方法 - 例如我需要评估哪些属性才能使其正常工作?
答案 0 :(得分:3)
您是否100%确定此代码在Load事件中运行?使用Handle属性可确保创建控制窗口,并且它将自动缩放以适应机器的视频适配器和系统字体设置。如果代码由于Load事件而实际运行,则永远不需要这样做,所有控件的所有句柄都将在那时创建。
请注意,AutoResizeColumnHeadersHeight()实际上是用于手动调整大小,它只能工作一次。虽然它会自动计算高度。要自动调整大小,请将ColumnHeadersHeightSizeMode属性设置为AutoSize。
答案 1 :(得分:0)
找到一个解决方法,如果我在之前添加一行,该方法可以正常工作:
Dim workaround As System.IntPtr = grid.Handle
grid.AutoResizeColumnHeadersHeight()
我仍然对更好的答案感兴趣。