2017-09-29 35 views
0

所以我有一个属性列宽度,我用来存储列索引和列的宽度,所以当我重新加载我的表格我的列宽度持续(刷新功能),该部分正在工作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值保持不变。它仍然有我添加到集合中的行。

+1

听起来好像'Form1'是窗体类的名称,而不是正在显示的类的实例。将'Form1'的实例传递给选项表单,并使用它来代替'Form1'来访问表单。 – Blackwood

+0

谢谢@Blackwood,帮助了我。我通过在属性中添加共享设置来实现它。 '公共共享属性ColumnWidths作为词典(整数,整数)' 现在它已经从使用表单改为使用正在工作的类:)。谢谢 – Grant

回答

0

将属性更改为共享允许选项表单访问窗体上的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 
相关问题