C# veri tabanından renk çekme

Burak C

Hectopat
Katılım
7 Ocak 2019
Mesajlar
48
Merhaba arkadaşlar. Bugün anlamadığım bir hata ile karşılaştım. Programdan veri tabanına renk kodlarını şu şekilde kaydediyorum.

kods2.PNG


Gördüğünüz this.BackColor.ToString() komutu renginin ismini alıyor. Sonra form load edilirken rengi veri tabanından çekerek formun rengini yapması gerekiyor onunda resmi şöyle.

kods.PNG


Kırmızı ok ile gösterdiğim kodun yukarsındaki timer1.interval, label5.text veri tabanından bilgileri alırken arkaplan rengi veritabanından almıyor.
Not: Veri tabanına kaydoluyor, şu şekilde o da:

kods3.PNG


Gördüğünüz gibi en baştaki ID diğerleri ise forma geçireceğim bilgiler. 3 ve 1000 değerleri forma geçerken color[Yellow] forma geçmiyor. Yardımcı olur musunuz? Hata vermiyor bu arada.
 
Son düzenleyen: Moderatör:
O şekilde olmaz, RGB değerlerini tutsaydınız daha doğru olurdu.

Okuma kısmında şu kodu kullanmayı deneyin:
C#:
string colorName = oku["arkaplan"].ToString().Substring(7);
this.BackColor = Color.FromName(colorName.Substring(0,colorName.Length-1));
Gördüğüm kadarı ile "Color [Yellow]" ancak "Color[Yellow]" ise Substring'i 6 olarak değiştirin.
 
Renk isimleri yerine rengi oluşturan değeri tutmak daha mantıklı olacaktır. RGB veya HSV olarak saklayıp gerektiğinde tekrar oluşturabilirsiniz.
C#'da RGB'yi 2 şekilde saklayabilirsiniz. [0-255] int ve [0-1] double olarak. Veri tabanı yapınıza bu ikisinden birisini kullanmanız yeterli.
 
O şekilde olmaz, RGB değerlerini tutsaydınız daha doğru olurdu.

Okuma kısmında şu kodu kullanmayı deneyin:
C#:
string colorName = oku["arkaplan"].ToString().Substring(7);
this.BackColor = Color.FromName(colorName.Substring(0,colorName.Length-1));
Gördüğüm kadarı ile "Color [Yellow]" ancak "Color[Yellow]" ise Substring'i 6 olarak değiştirin.
Merhaba yöntemini denedim oldu teşekkür ederim de mantığını anlamadım.Anlatırmısın Yani neden substring ile bölüyoruz ?
 
Merhaba yöntemini denedim oldu teşekkür ederim de mantığını anlamadım.Anlatırmısın Yani neden substring ile bölüyoruz ?
Dediğim gibi RGB ile tutarsan daha iyi olur. Ancak bu şekilde de çalışır.
Orada rengi tuttuğun zaman doğrudan adı ile kaydetmiyor görüldüğü üzere. Sen rengi adı ile oluşturmaya çalıştığında onun beklediği "Color [Yellow]" değil "Yellow"'dur. Substring ile "Color [" kısmını ve sondaki "]" kısmını siliyoruz. Geriye "Yellow" kaldığından başarıyla çalışıyor.
 

Yeni konular

Geri
Yukarı