Aracılığıyla paylaş


Özel denetimler için Visual Studio tasarım zamanı desteği (Windows.NET Form)

Windows'un tasarımcısıyla etkileşim kurarken fark ettiğiniz gibi, Windows FormFormdenetimleri tarafından sunulan birçok farklı tasarım zamanı özelliği vardır. Visual Studio Tasarımcısı tarafından sunulan özelliklerden bazıları tutturma çizgileri, eylem öğeleri ve özellik kılavuzu içerir. Bu özelliklerin tümü, tasarım zamanında bir denetimle etkileşim kurmanın ve özelleştirmenin daha kolay bir yolunu sunar. Bu makale, denetimlerinizin tüketicileri için tasarım zamanı deneyimini daha iyi hale getirmek için özel denetimlerinize ne tür destek ekleyebileceğinize ilişkin bir genel bakış sağlar.

.NET Framework'ten farklı olan şeyler

Özel denetimlerin birçok temel tasarım öğesi .NET Framework'ten aynı kalmıştır. Ancak eylem listeleri, tür dönüştürücüleri, özel iletişim kutuları gibi daha gelişmiş tasarımcı özelleştirme özellikleri kullanıyorsanız, işlemeniz gereken bazı benzersiz senaryolar vardır.

Visual Studio .NET Framework tabanlı bir uygulamadır ve bu nedenle Windows Formiçin gördüğünüz Görsel Tasarımcı da .NET Framework'e dayanır. .NET Framework projesiyle, hem Visual Studio ortamı hem de tasarlanan Windows Formuygulaması aynı işlemde çalışır devenv.exe. Bir Windows Form.NET (.NET Framework değil) uygulamasıyla çalışırken bu sorun oluşturur. .NET ve .NET Framework aynı işlem içinde çalışamaz. Sonuç olarak, Windows Form'un .NET'i "işlem dışı" tasarımcı olan farklı bir tasarımcı kullanır.

İşlem dışı tasarımcı, DesignToolsServer.exe adlı bir işlemdir ve Visual Studio'nun devenv.exe işlemi boyunca çalıştırılır. DesignToolsServer.exe işlemi, uygulamanızın hedeflediği .NET'in .NET 7 ve x64 gibi aynı sürümünde ve platformunda çalışır. Özel denetiminizin kullanıcı arabirimini devenv.exe görüntülemesi gerektiğinde, özel denetiminizin devenv.exe gelen ve devenv.exe iletişimi kolaylaştırmak için bir istemci-sunucu mimarisi uygulaması gerekir. Daha fazla bilgi için bkz . .NET Framework'ten (Windows Form.NET) sonra tasarımcı değişiklikleri.

Özellik penceresi

Visual Studio Özellikleri penceresi, seçili denetim veya formun özelliklerini ve olaylarını görüntüler. Bu genellikle bir özel denetim veya bileşen üzerinde gerçekleştirdiğiniz özelleştirmenin ilk noktasıdır.

Aşağıdaki görüntüde Görsel Tasarımcı'da seçilen bir Button denetim ve düğmenin özelliklerini gösteren özellikler kılavuzu gösterilmektedir:

Visual Studio'da bir düğmeyi ve özellikler penceresini gösteren Windows Formtasarımcısı

Özellikler kılavuzunda özel denetiminizle ilgili bilgilerin nasıl göründüğüne ilişkin bazı yönleri denetleyebilirsiniz. Öznitelikler özel denetim sınıfına veya sınıf özelliklerine uygulanır.

Sınıflar için öznitelikler

Aşağıdaki tabloda, tasarım zamanında özel denetimlerinizin ve bileşenlerinizin davranışını belirtmek için uygulayabileceğiniz öznitelikler gösterilmektedir.

Öznitelik Açıklama
DefaultEventAttribute Bir bileşen için varsayılan olayı belirtir.
DefaultPropertyAttribute Bir bileşen için varsayılan özelliği belirtir.
DesignerAttribute Bir bileşen için tasarım zamanı hizmetlerini uygulamak için kullanılan sınıfı belirtir.
DesignerCategoryAttribute Bir sınıf için tasarımcının belirli bir kategoriye ait olduğunu belirtir.
ToolboxItemAttribute Araç kutusu öğesinin özniteliğini temsil eder.
ToolboxItemFilterAttribute Araç Kutusu öğesi için kullanılacak filtre dizesini ve filtre türünü belirtir.

Özellikler için öznitelikler

Aşağıdaki tabloda, özelliklere veya özel denetimlerinizin ve bileşenlerinizin diğer üyelerine uygulayabileceğiniz öznitelikler gösterilmektedir.

Öznitelik Açıklama
AmbientValueAttribute Özelliğin değerini başka bir kaynaktan almasına neden olmak için bir özelliğe geçirecek değeri belirtir. Bu, ambiyans olarak bilinir.
BrowsableAttribute Özellikler penceresinde bir özelliğin veya olayın görüntülenip görüntülenmeyeceğini belirtir.
CategoryAttribute Bir denetim Categorized modunda görüntülendiğinde özelliğin veya olayın gruplandırıldığı PropertyGrid kategorinin adını belirtir.
DefaultValueAttribute Bir özelliğin varsayılan değerini belirtir.
DescriptionAttribute Bir özellik veya olay için açıklama belirtir.
DisplayNameAttribute Değer döndürmeyen ve bağımsız değişken içermeyen bir özellik, olay veya ortak yöntemin görünen adını belirtir.
EditorAttribute Bir özelliği değiştirmek için kullanılacak düzenleyiciyi belirtir.
EditorBrowsableAttribute Bir özelliğin veya yöntemin düzenleyicide görüntülenebilir olduğunu belirtir.
HelpKeywordAttribute Bir sınıf veya üye için bağlam anahtar sözcüğünü belirtir.
LocalizableAttribute Bir özelliğin yerelleştirilip yerelleştirilmeyeceğini belirtir.
PasswordPropertyTextAttribute Bir nesnenin metin gösteriminin yıldız işareti gibi karakterler tarafından gizlendiğini gösterir.
ReadOnlyAttribute Bu özniteliğin bağlı olduğu özelliğin tasarım zamanında salt okunur mu yoksa okuma/yazma mı olduğunu belirtir.
RefreshPropertiesAttribute İlişkili özellik değeri değiştiğinde özellik kılavuzunun yenilenmesi gerektiğini gösterir.
TypeConverterAttribute Bu özniteliğin bağlı olduğu nesne için dönüştürücü olarak kullanılacak türü belirtir.

Özel denetim tasarımcıları

Özel denetimler için tasarım süresi deneyimi, ilişkili bir özel tasarımcı yazılarak geliştirilebilir. Varsayılan olarak, özel denetiminiz konağın tasarım yüzeyinde görüntülenir ve çalışma zamanında olduğu gibi görünür. Özel bir tasarımcıyla denetimin tasarım zamanı görünümünü geliştirebilir, eylem öğeleri, tutturma çizgileri ve diğer öğeleri ekleyebilir ve bu öğeler kullanıcının denetimi nasıl düzenleyeceğini ve yapılandırabileceğini belirlemesine yardımcı olabilir. Örneğin tasarım zamanında ToolStrip tasarımcı, aşağıdaki görüntüde gösterildiği gibi kullanıcının tek tek öğeleri eklemesi, kaldırması ve yapılandırması için ek denetimler ekler:

Visual Studio'da bölünmüş kapsayıcının tasarım zamanı görünümünü gösteren bir Windows Formtasarımcısı.

Aşağıdaki adımları gerçekleştirerek kendi özel tasarımcılarınızı oluşturabilirsiniz:

  1. Microsoft.WinForms.Designer.SDK NuGet paketine başvuru ekleniyor.
  2. Sınıfından Microsoft.DotNet.DesignTools.Designers.ControlDesigner devralan bir tür oluşturun.
  3. Kullanıcı denetimi sınıfınızda sınıfı sınıf özniteliğiyle System.ComponentModel.DesignerAttribute işaretleyerek önceki adımda oluşturduğunuz türü geçirin.

Daha fazla bilgi için .NET Framework'ten farklı olanlar bölümüne bakın.

Eylem öğeleri

Tasarımcı eylemleri, kullanıcının ortak görevleri hızlı bir şekilde gerçekleştirmesini sağlayan bağlama duyarlı menülerdir. Örneğin, forma bir TabControl eklerseniz, denetime ve denetimden sekmeler ekleyip kaldıracaksınız. Sekmeler Özellikler penceresinde, bir sekme koleksiyonu düzenleyicisi görüntüleyen özelliği aracılığıyla TabPages yönetilir. Kullanıcıyı her zaman Özellik listesinden geçirip özelliği aramaya TabPages zorlamak yerine, TabControl aşağıdaki görüntülerde gösterildiği gibi yalnızca denetim seçildiğinde görünen bir akıllı etiket düğmesi sağlar:

Visual Studio'da bir sekme denetiminin akıllı etiket düğmesini gösteren Windows Formtasarımcısı.

Akıllı etiket seçildiğinde, eylem listesi görüntülenir:

Visual Studio'da bir sekme denetiminin akıllı etiket düğmesine basıldığını gösteren Ve eylemlerin listesini görüntüleyen Windows Formtasarımcısı.

Sekme Ekle ve Sekmeyi Kaldır eylemlerini ekleyerek, denetimin tasarımcısı sekmeyi hızla ekleyebilmeniz veya kaldırabilmenizi sağlar.

Eylem öğesi listesi oluşturma

Eylem öğesi listeleri, oluşturduğunuz türe göre ControlDesigner sağlanır. Aşağıdaki adımlar, kendi eylem listenizi oluşturmaya yönelik temel kılavuzlardır:

  1. Microsoft.WinForms.Designer.SDK NuGet paketine başvuru ekleniyor.
  2. öğesinden Microsoft.DotNet.DesignTools.Designers.Actions.DesignerActionListdevralan yeni bir eylem listesi sınıfı oluşturun.
  3. Kullanıcının erişmesini istediğiniz eylem listesine özellikleri ekleyin. Örneğin, sınıfına veya bool Boolean (Visual Basic'te) özelliği eklemek eylem listesinde bir CheckBox denetim oluşturur.
  4. Yeni bir tasarımcı oluşturmak için Özel denetim tasarımcıları bölümündeki adımları izleyin.
  5. Tasarımcı sınıfında, bir Microsoft.DotNet.DesignTools.Designers.Actions.DesignerActionListCollection tür döndüren özelliğini geçersiz kılınActionLists.
  6. Eylem listenizi bir DesignerActionListCollection örneğe ekleyin ve iade edin.

Eylem listesi örneği için windows tasarımcısı genişletilebilirlik belgeleri ve örnekleri GitHub deposuna, özellikle klasörüne TileRepeater.Designer.Server/ControlDesigner bakınForm.

Özellikler penceresinde, özelliğin yedekleme türünün bir numaralandırma, boole veya sayı olması gibi özelliklerin çoğu kılavuzda kolayca düzenlenir.

Hizalama özelliğini gösteren Bir Windows Formuygulaması için Visual Studio Özellikler penceresi.

Bazen bir özellik daha karmaşıktır ve kullanıcının özelliği değiştirmek için kullanabileceği özel bir iletişim kutusu gerektirir. Örneğin, Font özelliği, yazı tipinin görünümünü değiştiren birçok özellik içeren bir System.Drawing.Font türüdür. Bu özellik Özellikler penceresinde kolayca sunulmaz, bu nedenle bu özellik yazı tipini düzenlemek için özel bir iletişim kutusu kullanır:

Windows Formuygulaması için Visual Studio Yazı Tipi iletişim kutusu.

Özel denetim özellikleriniz Windows Formtarafından sağlanan yerleşik tür düzenleyicilerini kullanıyorsa, özelliklerini Visual Studio'nun kullanmasını istediğiniz karşılık gelen .NET Framework düzenleyicisiyle işaretlemek için kullanabilirsiniz EditorAttribute . Yerleşik düzenleyicileri kullanarak, işlem dışı tasarımcı tarafından sağlanan proxy-object istemci-sunucu iletişimini çoğaltma gereksinimini ortadan kaldırırsınız.

Yerleşik bir tür düzenleyicisine başvururken ,NET türünü değil .NET Framework türünü kullanın:

[Editor("System.Windows.Forms.Design.FileNameEditor, System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a",
        "System.Drawing.Design.UITypeEditor, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
public string? Filename { get; set; }
<Editor("System.Windows.Forms.Design.FileNameEditor, System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "System.Drawing.Design.UITypeEditor, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")>
Public Property Filename As String