Sdílet prostřednictvím


Řešení potíží s vývojem během návrhu

Následující běžné problémy, může dojít při vytváření vlastní zkušenosti návrhu model Windows Forms komponent a ovládacích prvků:

  • Kompilace nelze

  • Ladění v době návrhu nelze

  • Chyba kompilátoru: "název typu nebo oboru názvů názvu" typ"nebyl nalezen."

  • Chyba návrhu: "nepodařilo vytvořit komponentu"název komponenty.""

  • Chyba: ladění "neplatná operace mezi podprocesy: řízení ovládacího prvku název z jiného podprocesu než podproces byl vytvořen v."

  • Chyba návrhu: "nelze otevřít návrháře pro soubor, protože třída, kterou nedědí ze třídy, kterou lze vizuálně."

  • Glyfy, zůstane po odstranění komponenty

  • Výchozí chování Návrháře zakrytý vlastní chování

  • Vyvolané nezamýšleným způsobem návrháře události.

  • Kolekce nepodařilo serializovat

  • Návrhář nepodaří získat UndoEngine odkaz

  • Návrhové prostředí nerozpozná změny vlastností komponenty

  • DesignerAttributeSyntaxe

  • Po provedení změn součásti nebo Návrhář aktualizace návrhové prostředí

  • FxCop upozornění na formuláři nově vytvořeného systému Windows: DoNotInitializeUnnecessarily

  • Částečné třídy a Návrhář model Windows Forms

  • Starší vlastní ovládací prvky způsobit neočekávané chování v Návrháři

  • Inteligentní značky v hostovaném designer vyvolá výjimku

  • V paletě nástrojů se nezobrazuje ikona komponenty

Kompilace nelze

Významnou část návrhu, vývoje je třeba přidat odkaz na sestavení návrhu, System.Design.dll.Toto sestavení není součástí.NET Framework 4 profilu klienta.Chcete-li přidat odkaz na System.Design.dll, je nutné změnit cílový rámec projektu na .NET Framework 4.

Ladění v době návrhu nelze

Ladění kódu návrhu dvěma způsoby:

  • Místo MessageBox.Show volání na strategická místa v kódu.

  • Připojte další instanci Visual Studio k ladění návrhové prostředí první instance.

Další informace naleznete v tématu Postupy: Přístup ke službám během návrhu.

Chyba kompilátoru: "název typu nebo oboru názvů názvu" typ"nebyl nalezen"

By referenční sestavení System.Design.Návrhář související typy jsou umístěny v sestavení System.Design.Zahrnuje typy v System.Windows.Forms.Design a System.ComponentModel.Design obory názvů.

Také nezapomeňte importovat obory názvů, je nutné pomocí Imports nebo using klíčová slova.Další informace naleznete v tématu Postupy: Přístup k podpoře návrhu ve Windows Forms.

Chyba návrhu: "nepodařilo vytvořit komponentu component name"

Při vytváření komponenty nebo ovládacího prvku na plochu návrhu z dostávat tato chyba nástrojů.Následující tabulka uvádí dva pravděpodobné příčiny této chyby.

Příčina

Description

Poznámky

Chybí výchozí konstruktor.

Komponenta nebo ovládací prvek musí mít výchozí konstruktor, který je konstruktor bez parametrů.

Návrhové prostředí vyžaduje moci vytvořit instanci typu výchozí konstruktor.

Součást je obecný typ

Komponenta nebo ovládací prvek nemůže být Obecný typ, který se nazývá také Šablona typu nebo parametrizované typu.Návrhové prostředí nepodporuje obecné typy.

Pokud obecný typ je odvozen z UserControl a pokusíte se spustit v aplikaci Visual Studio Kontejner testu UserControl, zobrazí se následující chybová zpráva:

Nepodařilo se vytvořit UserControl ' název"

Byla chybová zpráva "Nelze vytvořit typ, pro který platí Type.ContainsGenericParameters."

UserControl bude odebrán ze seznamu.

Ačkoli součástí a ovládací prvky nelze obecné typy, mohou použít obecné typy.

Chyba návrhu: "hodnota nemůže být null.Název parametru: součást name "

Při vytváření komponenty nebo ovládacího prvku na plochu návrhu z dostávat tato chyba nástrojů.Nejpravděpodobnější příčinou je, že se pokoušíte použít komponentu nebo ovládací prvek, který byl sestaven pro sestavení 64-bit.Vývojové prostředí Visual Studio nepodporuje 64bitové komponenty.

Chyba: ladění "neplatná operace mezi podprocesy: řízení ovládacího prvku název z jiného podprocesu než podproces byl vytvořen v."

Používáte-li multithreading v model Windows Forms aplikacích, musí být pečlivě volání podprocesu způsobem ovládacích prvků.Tato výjimka je aktivována ladicím programem a v době spuštění se nezobrazí, ale je důrazně doporučeno potíže při zobrazení.Další informace naleznete v tématu Postupy: Volání (s bezpečným vlákny) ovládacích prvků Windows Forms.

Chyba návrhu: "nelze otevřít návrháře pro soubor, protože třída, kterou nedědí ze třídy, kterou lze vizuálně"

Soubor s komponenta nebo ovládací prvek může obsahovat více definic tříd, ale musí být první třídou v souboru, který můžete navrhnout.První třídou v souboru musí implementovat IComponent rozhraní, nebo musí být odvozena od Component třídy nebo odvozenému Component.

Glyfy, zůstane po odstranění komponenty

Pokud vaše vlastní Návrhář vytvoří všechny Adorner objekty, je nutné odstranit z plochy návrhu a při vaší designer dostane mimo rozsah.Volání BehaviorServiceAdornerCollection.Remove v designer's Dispose metoda zrušte Glyph objekty a související Adorner a Behavior objektů.Další informace naleznete v tématu Postupy: Rozšíření vzhledu a chování ovládacích prvků v režimu návrhu.

Výchozí chování Návrháře zakrytý vlastní chování

Návrhář ovládacího prvku výchozí vytvoří glyf, který zahrnuje celý ovládací prvek na plochu návrhu.S tímto názvem glyf subjektu.Pokud vaše vlastní ovládací prvek Návrhář vytvoří glyf s hranice stejný jako subjekt glyfů, jej budou překrývat, základní Behavior provádění přidružený subjekt glyfů.To zabrání výchozí funkce, jako jsou například inteligentní značky a velikost zobrazování glyfů.

Nelze předávání zpráv mezi Behavior objekty nelze zpracovat zprávu myší a předat všechny podkladové Behavior objektů.Při implementaci glyf, který zahrnuje celý ovládací prvek jsou odpovědné za celý vzhled a chování práci vlastní návrh.

Vyvolané nezamýšleným způsobem návrháře události.

Pokud vaše vlastní Návrhář přikládá obslužné rutiny událostí návrháře události jako ComponentRemovedActiveDesignerChanged, a SelectionChanged, obslužné rutiny nutné odpojit v Návrháři vaše Dispose metoda.

Nejsou-li k tomu může způsobit nežádoucí chování v době návrhu.Následující seznam uvádí některé příznaky, které mohou nastat:

  • Okno chybové zprávy: "při zpracování tohoto příkazu došlo k chybě."

  • Okno chybové zprávy: "Odkaz na objekt není nastaven na instanci objektu."

  • Obslužné rutiny události se nazývá nevhodně při odstranění komponenty nebo Návrháři budou zavřena.

Kolekce nepodařilo serializovat

Pokud chcete vlastní součást nebo kolekce vlastností ovládacího prvku k serializaci, použije DesignerSerializationVisibilityAttribute a nastavte ji na Content.Další informace naleznete v tématu Postupy: Serializace kolekcí standardních typů s DesignerSerializationVisibilityAttribute.

Návrhář selhání získání odkazu na UndoEngine

Chcete-li získat odkaz na UndoEngine služby při načítání formuláře GetService metoda vrátí null.

UndoEngine Služby není vytvořen a povolen, dokud formulář fáze jeho zatížení.Po formuláři je načten, následné volání GetService se vrátí UndoEngine odkaz.

Obecně by odkaz na zřídka vyžadovat UndoEngine přímo.Případy, ve kterých je třeba jsou obvykle způsobeny akce uživatele a dojít po Návrhář je načten.

Návrhové prostředí nerozpozná změny vlastností komponenty

Návrhové prostředí nerozpozná změny komponenta nebo ovládací prvek, pokud nastavíte vlastnosti přímo.Pro události, například ComponentChanged Chcete-li aktivována, musíte nastavit hodnotu vlastnosti dané komponenty s PropertyDescriptor.SetValue metoda.To upozorní návrhové prostředí Změna vlastnosti, povolení plochy návrhu a PropertyGrid ovládací prvky správně aktualizovat.Další informace naleznete v tématu Postupy: Rozšíření vzhledu a chování ovládacích prvků v režimu návrhu.

Syntaxe DesignerAttribute

Připojit své vlastní designer jej navrhuje použitím ovládacího prvku DesignerAttribute na ovládací prvek.

Je nutné zadat přesně DesignerAttribute parametry, jinak návrhové prostředí vaší vlastní designer nenačte.

Po provedení změn součásti nebo Návrhář aktualizace návrhové prostředí

Změny návrhu aspektů komponenty, je nutné znovu vytvořit projekt komponenty.Navíc pokud jiného model Windows Forms projekt je otevřen a používá tuto součást bude pravděpodobně potřebujete aktualizovat změny projektu.Obvykle musíte zavřít a znovu otevřete okno návrhu obsahuje součást.

FxCop upozornění na formuláři nově vytvořeného systému Windows: DoNotInitializeUnnecessarily

Návrhář model Windows Forms generuje následující kód pro projekty model Windows Forms aplikace v jazyce C#.

private System.ComponentModel.IContainer components = null;

V závislosti na FxCop platí pravidla, FxCop může způsobit upozornění "DoNotInitializeUnnecessarily".Důvodem je, že null je výchozí vlastnosti odkazu Common Language (Runtime CLR).

Pokud návrhář neinicializoval components pole na null, vytvoří následující upozornění kompilátoru jazyka C#:

"Form1.components nikdy přiřazen a vždy bude mít výchozí hodnotu null.

Můžete potlačit varování FxCop s SuppressMessageAttribute, ale to může způsobit problémy údržby, pokud se změní název třídy.Proto je vhodné, aby ignorovat upozornění FxCop.

Částečné třídy a Návrhář model Windows Forms

Standardně Návrhář model Windows Forms vyzařuje návrháře serializaci kódu do vyhrazeného souboru odděleném od hlavního souboru dané komponenty.Například v projektu aplikace model Windows Forms, definice Form1 třídy je rozděleno do dvou souborů podle následující tabulky.

Soubor (C# názvy souborů)

Function

Form1.cs

Hlavní třída souboru

Form1.Designer.cs

Kód vyzařovaného Designer

Soubor (VB názvy souborů)

Function

Form1.VB

Hlavní třída souboru

Form1.Designer.VB

Kód vyzařovaného Designer

Obecně není nutné měnit kód vyzařovaného Návrhář model Windows Forms.Upravte soubor hlavní třídy.

Používá Návrhář model Windows Forms partial klíčové slovo rozdělit provádění Form1 do dvou samostatných souborů.To zabrání kód vyzařovaného designer je proloženo kódu.Další informace o partial klíčové slovo, viz Částečné třídy a metody (Průvodce programováním v C#) a Partial (Visual Basic).

Návrhář model Windows Forms nepodporuje vydělením definice typu designable na více než dva partial implementace.Toto omezení zahrnuje vytváření nového souboru třídy, která obsahuje třetí částečnou definici typu, jakož i přidání třetí dílčí třídy definice typu v hlavním souboru nebo souboru návrháře.Členy definované tímto způsobem nebudou viditelné v Návrháři model Windows Forms.

Starší vlastní ovládací prvky způsobit neočekávané chování v Návrháři

Při typy jsou zrušena v Návrháři ComponentSerializationService provede částečné znovu načíst aktualizovat návrháře s aktualizovanou typy.Verze Visual Studio před Visual Studio 2005 zcela znovu Návrhář.S částečným znovu načíst chování v Visual Studio 2005 je rychlejší než úplné znovu načíst a také zachová zásobníku zpět.

Součásti a odpovídající serializers vytvořené před Visual Studio 2005 nemusí být schopna přijmout částečné znovu načíst.Komponenty a prvky může způsobit neočekávané chování, protože byly vytvořeny rekonstruovat pouze během celé znovu načíst.Příznaky zahrnout přetečení zásobníku, zablokuje nebo prázdné oblasti v Návrháři model Windows Forms starší ovládací prvky jsou k dispozici.

Můžete se vrátit k chování celé znovu načíst přidáním následujících nastavení souboru devenv.exe.config.Pokud jste nainstalovali Visual Studio 2005 na výchozí umístění tohoto souboru je ve složce C:\Program Files\Microsoft Visual Studio 8\Common7\IDE.

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

Inteligentní značky v hostovaném designer vyvolá výjimku

Pokud jste svolali Návrhář mimo Visual Studio, inteligentní značky mohou zvýšit NullReferenceException.Chcete-li tento problém vyřešit, poskytnout IUIService odkaz v Návrháři a zavést Styles vlastnost.V IDictionary prostřednictvím Styles, přiřadit nový Font jako prvek určený klíčem "DialogFont", jak je znázorněno v následující fragment kódu.

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

V paletě nástrojů se nezobrazuje ikona komponenty

V Visual Studio, při použití ToolboxBitmapAttribute Chcete-li přidružit ikonu vlastní součást, nezobrazí bitmapy v panelu nástrojů pro součásti vytvořeno automaticky.Rastr zobrazíte znovu načíst ovládací prvek pomocí Vybrat položky panelu nástrojů dialogové okno.Další informace naleznete v tématu Toolbox Icons.

Viz také

Úkoly

Postupy: Přístup ke službám během návrhu

Koncepty

Chyby při návrhu v Návrháři formulářů Windows

Další zdroje

Rozšíření podpory během návrhu