Nasıl bir soyut temel sınıf uygulayan bir Formu işlemek için Visual Studio 2008 Windows Forms tasarımcısı alabilir miyim?
Windows Formları kalıtsal Denetimleri ile ilgili bir sorun ile meşgul oldum ve yardıma ihtiyacım var.
Listedeki öğeler için temel sınıf (selfmade GUI liste bir panel yapılmış) kullanıyorum ve bazı listeye eklenemedi her veri türü için denetimleri devralınan.
Yok sorun değil, ama ben şimdi öğrendim, bu doğru değil, taban kontrol soyut bir sınıf'den bu yana yöntemleri, gereken uygulanan tüm miras denetimleri olarak adlandırılan içinde kod tabanı-kontrol, ama olmamalıdır ve olamaz uygulanan taban sınıf.
Özet olarak temel kontrol işaretliyorum, Visual Studio 2008 Tasarımcısı penceresi yüklemek için reddediyor.
Bir şekilde temel denetim Tasarımcı iş soyut yapılmış olabilir.
CEVAP
Bunu yapmak için bir yol (ve bu temiz bir şekilde yapmak için bir yol buldum) olması gerektiğini BİLİYORDUM. Sheng çözüm tam olarak ne ben ile geldi gibi geçici bir çözüm ama sonra bir arkadaşım çekti o Form
sınıf sonunda kalıtsal bir abstract
Sınıf yapmalıyız, neler yapacak bu işi. Eğer onlar yapabiliyorsa, biz de yapabiliriz.
Sorun bu koddan gittik
Form1 : Form
Sorun
public class Form1 : BaseForm
...
public abstract class BaseForm : Form
Bu ilk soru oyun haline geldiği yer. Daha önce de söylediğim gibi, bir arkadaşım System.Windows.Forms.Form
soyut bir temel sınıf uygulayan işaret etti. Bulabildik...
Daha iyi bir çözüm kanıtı
Miras Hiyerarşisi:
- System.Object
- System.MarshalByRefObject (
public **abstract** class MarshalByRefObject
)
- System.MarshalByRefObject (
- System.Object
İlk Çözüm
public class Form1 : MiddleClass
...
public class MiddleClass : BaseForm
...
public abstract class BaseForm : Form
...
Bu gerçekten çalışıyor ve tasarımcı, ince işler, sorun çözüldü.... üretim uygulamada miras fazladan bir düzeyi olması dışında sadece win tasarımcısı bir yetersizlik nedeniyle gerekli oldu!
Bu çok iyi ama 100% kesin bir çözüm değil. Temelde #if DEBUG
rafine çözüm için kullanın.
Rafine Çözüm
Form1.cs
#if DEBUG
public class Form1 : MiddleClass
#else
public class Form1 : BaseForm
#endif
...
MiddleClass.cs
public class MiddleClass : BaseForm
...
BaseForm.cs
public abstract class BaseForm : Form
...
Bu ne çözümü anlatılan yalnızca "ilk çözüm ise hata ayıklama modunda ise.", Hiç bir hata ayıklama yapı ile üretim modu serbest bırakacaksınız ve her zaman hata ayıklama modunda tasarım olmasıdır.
Tasarımcı her zaman kod geçerli modu dahili karşı çalışır, olamaz yayım modunda tasarımcısı kullanın. Ancak, hata ayıklama modunda tasarım ve kodu yayın modunda inşa serbest olduğu sürece, gitmek iyidir.
En garantili çözüm ise basit bir yönerge ile tasarım modu için test yapabilirsiniz.
Nasıl Android Geliştirme için MS Visua...
Nasıl otomatik olarak Visual Studio 20...
Nasıl kalıcı olarak Visual Studio 2008...
Nasıl yeni C için Visual Studio şablon...
Nasıl otomatikleştirme "komut dos...