VB属性没有被设置时,从另一种形式设置
问题描述:
所以我有一个属性列宽度,我用来存储列索引和列的宽度,所以当我重新加载我的表格我的列宽度持续(刷新功能),该部分正在工作100%。VB属性没有被设置时,从另一种形式设置
''' <summary>
''' Stores the widths of the columns on the form.
''' </summary>
''' <returns></returns>
Public Property ColumnWidths As Dictionary(Of Integer, Integer)
Get
Return _columnWidths
End Get
Set(ByVal value As Dictionary(Of Integer, Integer))
_columnWidths = value
End Set
End Property
但是当我更改显示的列(当我在我的选项窗体上)时,我想清除该属性。这是问题所在。
Form1.ColumnWidths = Nothing
我一直在使用一个公共变量试过了,这也不行。有趣的是,我已经在整个解决方案中使用了属性等,并且所有的工作都是100%的,但这只是在研究我的工具,因为我从我的选项表单中设置它时没有保留价值。
我甚至有一个Form1上没有Get Set部件的属性,当我从选项窗体中设置它时,它工作正常。然而这个属性并不想被设置。
这两个表单都在相同的名称空间内,并且它会将设置的部分触发到属性,但_columnWidths值保持不变。它仍然有我添加到集合中的行。
答
将属性更改为共享允许选项表单访问窗体上的Form1类。
''' <summary>
''' Stores the widths of the columns on the form.
''' </summary>
''' <returns></returns>
Public Shared Property ColumnWidths As Dictionary(Of Integer, Integer)
Get
Return _columnWidths
End Get
Set(ByVal value As Dictionary(Of Integer, Integer))
_columnWidths = value
End Set
End Property
听起来好像'Form1'是窗体类的名称,而不是正在显示的类的实例。将'Form1'的实例传递给选项表单,并使用它来代替'Form1'来访问表单。 – Blackwood
谢谢@Blackwood,帮助了我。我通过在属性中添加共享设置来实现它。 '公共共享属性ColumnWidths作为词典(整数,整数)' 现在它已经从使用表单改为使用正在工作的类:)。谢谢 – Grant