rbulph Posted December 5, 2006 Posted December 5, 2006 (edited) I have three alternative bits of code that I can use to refresh the property grid when a property changes other than through the user changing it through the propertygrid. These are shown below: Public Class Form1 Dim WithEvents h As New ABC Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Me.PropertyGrid1.SelectedObject = h End Sub Private Sub h_paintgrid() Handles h.paintgrid Me.PropertyGrid1.Refresh() End Sub End Class Public Class ABC Event paintgrid() Private def As Long <System.ComponentModel.RefreshProperties(System.ComponentModel.RefreshProperties.Repaint)> Public Property Def1() As Long 'Option 1 = RefreshProperties.Repaint, Option 2 = RefreshProperties.All Get Return def End Get Set(ByVal value As Long) def = value Me.Ghi1 = value & " *!$@" ' RaiseEvent paintgrid() 'Option 3 End Set End Property Private ghi As String Public Property Ghi1() As String Get MsgBox("Property Queried") Return ghi End Get Friend Set(ByVal value As String) ghi = value End Set End Property Private jkl As Boolean Public Property Jkl1() As Boolean Get Return jkl End Get Set(ByVal value As Boolean) jkl = value End Set End Property End Class Each of them works OK to refresh the value shown for Ghi1 when Def1 is changed in the propertygrid and the focus is then moved away from Def1 (to Jkl1 for instance). But I have three questions: 1. Is there really any difference between Options 1 and 2? The help files say that RefreshProperties.All means that the properties will be requeried. But I get my message box even if RefreshProperties.Repaint is set and cannot see any difference between the two options. 2. Is there any argument against just using my event based Option 3 approach? I find this the simplest; and 3. Is there any way of just having the Ghi1 item refreshed in the propertygrid rather than the whole grid being refreshed each time? That would seem more efficient, if it can be done, especially in a larger grid. EDIT: Option 3 seems to be better in fact because RefreshProperties only operates if the change is made by the user through the propertygrid, not if I make a change in code. Edited December 5, 2006 by rbulph Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.