Just some BS code to illustrate the problem I'm having. The issue is with the change() sub under Color_Class (line 13). It gives the error:
"Reference to a non-shared member requires an object reference"

VB Code:
  1. Public Class Form1
  2.     Friend WithEvents Button1 As myButton_Class
  3.     Friend WithEvents Button2 As myButton_Class
  4.  
  5.     Class myButton_Class
  6.         Inherits Button
  7.         Public myColor As New Color_Class
  8.  
  9.         Class Color_Class
  10.             Private _color As Color
  11.  
  12.             Sub change()
  13.                 BackColor = _color
  14.             End Sub
  15.  
  16.             Property color() As Color
  17.                 Get
  18.                     color = _color
  19.                 End Get
  20.                 Set(ByVal value As Color)
  21.                     _color = value
  22.                 End Set
  23.             End Property
  24.         End Class
  25.  
  26.     End Class
  27.  
  28.     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  29.         Button1.myColor.color = Color.Aqua
  30.         Button1.myColor.change()
  31.         Button2.myColor.color = Color.Blue
  32.         Button2.myColor.change()
  33.     End Sub
  34.  
  35.     Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  36.         Button1 = New myButton_Class
  37.         Button1.Location = New System.Drawing.Point(100, 75)
  38.         Button1.Size = New System.Drawing.Size(75, 25)
  39.         Button1.Name = "Button1"
  40.         Button1.Text = "Button1"
  41.         Controls.Add(Button1)
  42.  
  43.         Button2 = New myButton_Class
  44.         Button2.Location = New System.Drawing.Point(100, 125)
  45.         Button2.Size = New System.Drawing.Size(75, 25)
  46.         Button2.Name = "Button2"
  47.         Button2.Text = "Button2"
  48.         Controls.Add(Button2)
  49.     End Sub
  50. End Class

How can I fix this error? I want to create "smart" properties that perform functions on themselves, but each has to be it's own instance since I can't share the storage... Clearly I'm missing something fundamental in my understanding of shared and instantiated...

Help?

-Andy.