Tasarım Zamanı Geliştirme Sorunlarını Giderme

Bileşenleri Windows Forms ve denetimler için özel bir tasarım zamanı deneyimi oluşturduğunuzda, aşağıdaki ortak sorunlar oluşabilir:

  • Derleme oluşturulamıyor

  • Tasarým anýnda hata ayıklama oluşturulamıyor

  • Derleyici hatası: "type or namespace 'türü adı' bulunamadı."

  • Tasarım zamanı hatası: bileşen 'bileşen adı' oluşturmak "başarısız"

  • Hata ayıklaması: "Geçersiz iş parçacıkları arası işlem: denetim oluşturulduğu iş parçacığı dışında başka bir iş parçacığı tarafından erişilen'name ' denetimi."

  • Tasarım zamanı hatası: "içindeki sınıf görsel olarak tasarlanmış bir sınıftan devralınmadığından dosya için tasarımcı açılamıyor."

  • Bileşen silindikten sonra Glifler olarak kalır.

  • Özel davranış tarafından getirilmemeli Tasarımcısı davranışı

  • İstenmeyen bir şekilde Tasarımcı olaylar

  • Seri hale getirmek Koleksiyonlar başarısız

  • Tasarımcısı başarısız almaya bir UndoEngine başvurusu

  • Bileşenin özelliklerinde yapılan değişiklikler tasarım ortamı algılamıyor

  • DesignerAttributeSözdizimi

  • Değişiklikleri yaptıktan sonra bileşen veya Tasarımcısı tasarım ortamını yenileme

  • Yeni oluşturulan Windows formundaki FxCop Uyarı: DoNotInitializeUnnecessarily

  • Parçalı sınıflar ve Windows Forms tasarýmcýsý

  • Eski özel denetimler Tasarımcısı'nda beklenmeyen davranışlara neden

  • Akıllı etiket barındırılan Tasarımcısı'nda bir özel durum oluşturur.

  • Araç kutusundan bileşen simgesini görünmez

Derleme oluşturulamıyor

Tasarım geliştirme'nin önemli bir bölümü için tasarım zamanı derleme, System.Design.dll bir başvuru eklemeniz gerekir.Bu derleme dahil edilmez.net Framework 4 istemci profili.System.Design.dll için bir başvuru eklemek için projenin hedef çerçevesini değiştirmek .net Framework 4.

Tasarým anýnda hata ayıklama oluşturulamıyor

Tasarım zamanı kodunuzu hata ayıklamak için iki yol vardır:

  • Yer MessageBox.Show çağrıları kodunuzda stratejik noktalarda.

  • Başka bir örneğini tasarım ortamını ilk örneğinin hata ayıklamak için Visual Studio iliştirin.

Daha fazla bilgi için bkz. Nasıl yapılır: Tasarım Zamanı Hizmetlerine Erişim.

Derleyici hatası: "type or namespace 'türü adı' bulunamadı"

System.Design derleme başvuru.Designer ile ilgili türleri System.Design derlemede yer alır.Bu türler içerir System.Windows.Forms.Design ve System.ComponentModel.Design ad.

Ayrıca, gerek kullanarak ad alanları almak mutlaka Imports veya using anahtar sözcükler.Daha fazla bilgi için bkz. Nasıl yapılır: Tasarım Zamanı Desteğine Windows Formlarından Erişim.

Tasarım zamanı hatası: bileşen 'bileşen adı' oluşturmak "başarısız"

Bileşen veya tasarım yüzeyi denetiminde oluştururken bu hata iletisini araç.Aşağıdaki tabloda, bu hatanın iki olası nedenleri gösterilmektedir.

Neden

Description

Notlar

Eksik varsayılan Oluşturucu

Parametreleri olmayan bir kurucu olan bir varsayılan kurucu bileşeni veya denetimi olmalıdır.

Tasarım ortamını kendi türünde bir örnek oluşturmak için bir varsayılan kurucu gerektirir.

Genel tür bileşenidir

Bileşeni veya denetimi olamaz bir Genel olarak da adlandırılan türü bir şablonu türü veya bir parametreli türü.Genel türler tasarım ortamını desteklemez.

Genel türünüzü türetildiği, UserControl ve Visual Studio içinde çalıştırmak girişimi UserControl sınaması kapsayıcısı, aşağıdaki hata iletisini:

UserControl oluşturulamadı ' adı'

Hata iletisi 'Type.ContainsGenericParameters'ı doğru olan bir türde oluşturulamıyor.' idi.

UserControl listeden kaldırılacak.

Bileşenleri ve denetimleri genel türler olamaz, ancak bunlar genel türler kullanabilirsiniz.

Tasarım zamanı hatası: "değeri null olamaz.Parametre adı: 'bileşen adı' "

Bileşen veya tasarım yüzeyi denetiminde oluştururken bu hata iletisini araç.Bir bileşen veya 64-bit derleme için üretilmiştir denetimi kullanmaya çalıştığınız en olası nedendir.64-Bit bileşenleri Visual Studio tasarım ortamını desteklemez.

Hata ayıklaması: "Geçersiz iş parçacıkları arası işlem: denetim oluşturulduğu iş parçacığı dışında başka bir iş parçacığı tarafından erişilen'name ' denetimi."

Kullanırsanız, çoklu kullanım Windows Forms uygulamalarında, bir iş parçacığı için güvenli şekilde denetimlerinizi çağrı yapmak dikkatli olmalısınız.Bu özel durum hata ayıklayıcı tarafından oluşturulur ve çalışma zamanında görünmez, ancak onu gördüğünüzde, bu sorunu gidermek için kesinlikle önerilir.Daha fazla bilgi için bkz. Nasıl yapılır: Windows Forms Denetimlerine İş Parçacığı Güvenli Aramalar Yapma.

Tasarım zamanı hatası: "içindeki sınıf görsel olarak tasarlanmış bir sınıftan devralınmadığından dosya için tasarımcı açılamıyor"

Dosya bileşen veya denetim ile birden çok sınıf tanımları içerebilir ancak dosyadaki ilk sınıf, tasarlayabilirsiniz biri olması gerekir.Dosyadaki ilk sınıf uygulamalıdır IComponent arabirimi, veya gerekir dan türetmek Component sınıf veya türetilmiş bir sınıf Component.

Bileşen silindikten sonra Glifler olarak kalır.

Kendi özel Tasarımcısı herhangi oluşturursa, Adorner nesneleri silmelisiniz bunları tasarımı yüzeyinden kendi Tasarımcısı kapsam dışına çıktığında.Call BehaviorServiceAdornerCollection.Remove Tasarımcısı 's Dispose temizlemek için yöntemi, Glyph nesneleri ve ilgili Adorner ve Behavior nesneler.Daha fazla bilgi için bkz. Nasıl yapılır: Tasarım Modunda Denetimlerin Görünüşü ve Davranışını Genişletme.

Özel davranış tarafından getirilmemeli Tasarımcısı davranışı

Varsayılan denetim Tasarımcısı tasarım yüzeyi üzerinde tüm denetim kapsayan bir glif oluşturur.Bu adlı gövde glif.Kendi özel denetim Tasarımcısı olarak gövde glif aynı sınırları ile bir glif oluşturursa, onu arka plandaki gizlememesi Behavior gövde glifle ilişkili uygulama.Bu akıllı etiketler gibi varsayılan özelliklerini engeller ve Glifler görüntülenmesini yeniden boyutlandırın.

İletileri arasında geçirilemez Behavior fare iletisi işlemek ve herhangi bir temel için ileriye doğru şekilde nesneleri Behavior nesneler.Tüm denetim kapsayan bir glif geliştirdiğinizde, tüm görünümünü ve davranışını özel tasarım deneyiminizi için sorumlu.

İstenmeyen bir şekilde Tasarımcı olaylar

Kendi özel Tasarımcısı olay işleyicileri Tasarımcı olayları gibi bağlanıyorsa ComponentRemovedActiveDesignerChanged, ve SelectionChanged, kendi Tasarımcısı içinde olay işleyicileri ayırmak Dispose yöntemi.

Bunu yapmak başarısız olan tasarım zamanında istenmeyen davranışlara neden olabilir.Aşağıdaki liste bazı belirtileri ortaya çıkabilir gösterir:

  • Hata iletisi kutusunu: "Bu komut işlenirken bir hata oluştu."

  • Hata iletisi kutusunu: "Nesne başvurusu bir nesnenin örneğine ayarlanmadı."

  • Olay işleyicilerini açamayacağı bileşenleri silinir veya tasarımcıları kapalı olarak adlandırılır.

Seri hale getirmek Koleksiyonlar başarısız

Özel bileşeninizi veya denetimin toplama özelliği seri hale getirilmek üzere isterseniz, uygulama DesignerSerializationVisibilityAttribute ve ayarlamak Content.Daha fazla bilgi için bkz. Nasıl yapılır: DesignerSerializationVisibilityAttribute ile Standart Türler Koleksiyonlarının Seri Hale Getirilmesi.

UndoEngine başvuru almaya Tasarımcısı başarısız

Başvuru almaya çalışırsanız, UndoEngine bir form yüklerken, hizmet GetService yöntemi döndürür null.

UndoEngine Hizmet değil oluşturulur ve form kendi yüklenme aşaması tamamlanıncaya kadar etkin.Yüklenen, sonraki aramalar için form sonra GetService döner bir UndoEngine başvuru.

Genel olarak, nadiren bir başvuru gerektirmelidir UndoEngine doğrudan.Bu gibi durumlarda, gerek genellikle kullanıcı eylemi tarafından neden ve tasarımcı yüklendi sonra oluşur.

Bileşenin özelliklerinde yapılan değişiklikler tasarım ortamı algılamıyor

Doğrudan özelliklerini ayarlarsanız, bileşeni veya denetimi yapılan tasarım ortamını tanımıyor.Benzer olaylar için ComponentChanged yükseltilmiş olması için bileşenin özellikleri ile değerinin ayarlanması PropertyDescriptor.SetValue yöntemi.Bu tasarım yüzeyi etkinleştirme özelliği değişikliği tasarım ortamını bildirir ve PropertyGrid doğru güncelleştirmek için kontrol eder.Daha fazla bilgi için bkz. Nasıl yapılır: Tasarım Modunda Denetimlerin Görünüşü ve Davranışını Genişletme.

DesignerAttribute sözdizimi

Kendi özel Tasarımcısı tasarlar uygulayarak denetim eklemek DesignerAttribute denetlemek.

Tam olarak belirtmeniz gerekir DesignerAttribute parametreleri, aksi takdirde tasarım ortamını kendi özel Tasarımcısı yüklemez.

Değişiklikleri yaptıktan sonra bileşen veya Tasarımcısı tasarım ortamını yenileme

Bir bileşen tasarım zamanı yönlerini değişiklik yaptığınızda bileşenin proje yeniden oluşturmanız gerekir.Şu anda açık olan ve bu bileşen kullanan başka bir Windows Forms projesi ise, buna ek olarak, size büyük bir olasılıkla proje değişiklikleri görmek için Yenile gerekecektir.Genellikle, kapatın ve bileşen içeren Tasarım penceresini yeniden açın.

Yeni oluşturulan Windows formundaki FxCop Uyarı: DoNotInitializeUnnecessarily

Windows Forms tasarýmcýsý aşağıdaki kod Windows Forms uygulamasý projeler için C# [NULL]'ta oluşturur.

private System.ComponentModel.IContainer components = null;

Bağlı FxCop kuralları, FxCop "DoNotInitializeUnnecessarily" uyarı üretebilir etkindir.Bu, çünkü null başvuru özellikleri için ortak dil çalışma zamanı (clr) varsayılandır.

Tasarımcı başlatılamadı, components alanını null, C# derleyicisi aşağıdaki uyarı üretir:

"Form1.components atanmadığını ve her zaman null varsayılan değerine sahip olacaktır."

FxCop uyarıyla bastırabilirsiniz SuppressMessageAttribute, ancak sınıf adı değiştirilirse, bu bakım sorunları neden olabilir.Bu nedenle, FxCop uyarı yoksayılabilir önerilir.

Parçalı sınıflar ve Windows Forms tasarýmcýsý

Varsayılan olarak, Windows Forms tasarýmcýsý, bileşenin ana dosyasından ayrı olarak ayrılmış bir dosyaya Tasarımcı seri hale getirme kodu gösterir.Örneğin, bir Windows Forms uygulaması proje tanımı, Form1 sınıfı iki dosyaya aşağıdaki tabloda gösterildiği şekilde bölmek.

Dosya (C# dosya adları)

İşlev

Form1.cs

Ana sınıf dosyası

Form1.Designer.cs

Tasarımcısı oluşturulan kodu

Dosya (dosya adları vb)

İşlev

TreeView

Ana sınıf dosyası

Form1.Designer.vb

Tasarımcısı oluşturulan kodu

Genel olarak, Windows Forms Designer tarafından oluşturulan kodu değiştirmeniz gerekmez.Bunun yerine ana sınıf dosyasını düzenleyin.

Windows Forms tasarýmcýsý kullanır partial uygulaması bölmek için anahtar sözcük Form1 ikiye ayrı dosyalar.Bu Tasarımcısı oluşturulan kodu kodunuzu interspersed önler.Hakkında daha fazla bilgi için partial , anahtar Bkz: Kısmi Sınıflar ve Yöntemler (C# Programlama Kılavuzu) ve Kısmi (Visual Basic).

Windows Forms tasarýmcýsý ikiden fazla içine designable tipinin tanımı bölme desteklemiyor partial uygulamaları.Bu kısıtlama, türünün üçüncü kısmi bir tanımını içeren yeni bir sınıf dosyası oluşturma gibi ana dosyası veya Tasarımcı dosya türünde üçüncü bir kısmi sınıf tanımı ekleme içerir.Bu şekilde tanımlanan üyeler Windows Forms tasarýmcýsý görünür olmaz.

Eski özel denetimler Tasarımcısı'nda beklenmeyen davranışlara neden

Türleri Tasarımcısı'nda geçersiz kılınır, ComponentSerializationService gerçekleştirdiği bir kısmi yeniden Tasarımcısı güncelleştirilmiş türleri ile yenilemek için.Sürümleri Visual Studio önceki Visual Studio 2005 Tasarımcısı tamamen yeniden.Kısmi davranışı yeniden Visual Studio 2005 geri alma yığını da tam bir yeniden yükleme ve onu korur daha hızlı olur.

Bileşenleri ve karşılık gelen serializers önce yazılmış Visual Studio 2005 kısmi yeniden yerleştirmek mümkün olmayabilir.Bileşenleri ve denetimleri sırasında için tam bir yeniden seriyi kaldırmak için yazılmış çünkü beklenmeyen davranışlara neden olabilir.Eski denetimleri bulunduğunda Belirtiler yığını taşmaları, askıda kalıyor veya boş bölgeler Windows Forms tasarýmcýsý dahil.

Devenv.exe.config dosyasına aşağıdaki ayarı ekleyerek tam yükle davranışı dönebilirsiniz.Sizin Visual Studio 2005 için varsayılan konum, bu dosya C:\Program Files\Microsoft Visual Studio 8\Common7\IDE klasöründe bulunur.

<appSettings>
   <add key="EnableOptimizedDesignerReloading" value="false" />
</appSettings>

Akıllı etiket barındırılan Tasarımcısı'nda bir özel durum oluşturur.

Bir tasarımcı dışında ev sahipliği yapıyorsanız, Visual Studio, akıllı etiketleri neden olabilir bir NullReferenceException.Bu sorunu gidermek için bir IUIService Tasarımcısı ve Uygula başvurusunda Styles özelliği.De IDictionary tarafından sergilenen Styles, yeni bir atama Font aşağıdaki kod parçasında gösterildiği gibi "DialogFont" anahtarı tarafından belirtilen öğe.

Styles["DialogFont"] = new Font(...);

Araç kutusundan bileşen simgesini görünmez

De Visual Studio, kullandığınızda ToolboxBitmapAttribute bir simge özel bileşeninizi ile ilişkilendirmek için bit eşlem otomatik bileşenleri için araç kutusunda görünmez.Bit eşlem görmek için denetimi kullanarak yeniden Choose Toolbox Items iletişim kutusu.Daha fazla bilgi için bkz. Toolbox Icons.

Ayrıca bkz.

Görevler

Nasıl yapılır: Tasarım Zamanı Hizmetlerine Erişim

Kavramlar

Windows Formları Tasarımcısında Tasarım Zamanı Hataları

Diğer Kaynaklar

Tasarım Zamanı Desteği Sunma