Visual Basic'te formun durumunu (boyut, konum, alan değerleri) oturumlar arasında korumanın temel görevi, kapatıldığında verileri dış kaynağa (dosya, kayıt defteri, kullanıcı ayarları) yazmak ve başlatıldığında geri yüklemektir.
Yaklaşımlar:
My.Settings Kullanım Örneği:
' Durumu kaydetme Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing My.Settings.WindowLocation = Me.Location My.Settings.WindowSize = Me.Size My.Settings.Save() End Sub ' Durumu geri yükleme Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load If Not My.Settings.WindowSize.IsEmpty Then Me.Size = My.Settings.WindowSize End If If Not My.Settings.WindowLocation.IsEmpty Then Me.Location = My.Settings.WindowLocation End If End Sub
Ayarlar, tasarımcı aracılığıyla veya elle eklenir.
İncelikler:
My.Settings üzerinden standart dışı bir nesne (örneğin, DataTable) kaydedilebilir mi? Bu nasıl doğru bir şekilde yapılır?
Cevap: Evet, fakat ayar türü Kullanıcı olmalı ve nesne serileştirmeyi desteklemelidir. DataTable veya karmaşık nesneler için My.Settings serileştirilmiş Binary/XML biçiminde kaydeder. Serileştirme desteği sağlanmalı veya elle serileştirici aracılığıyla yazım yapılmalıdır.
Hikaye
Uygulamada form durumunu Windows kayıt defterine kaydediyorduk. Bazı güncellemelerden sonra kullanıcılar, izin kısıtlamaları nedeniyle ayarlarına erişim kaybetti, bu da destek taleplerinde bir artışa neden oldu. Çözüm — kullanıcı profillerinde My.Settings'e geçiş.
Hikaye
Uygulama başlatıldığında pencere konumu koordinatları kontrol edilmeden, görünür alan dışına yerleştiriliyordu (ikinci monitör değişti). Artık formun konumunu geri yüklerken masaüstü sınırlarını kontrol eden bir mantık eklenmiştir.
Hikaye
Uygulamanın eski bir sürümünden güncelleme yapılırken, geliştiriciler kullanıcı ayarlarını (iç içe alanlar) taşımayı sağlamadılar. Sonuç — veri kaybı ve kullanıcıların memnuniyetsizliği. Ayarların sürüm göçünü ve uyumluluğun kontrolünü desteklemek için bir politika benimsendi.