Ö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:
Ö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:
Aşağıdaki adımları gerçekleştirerek kendi özel tasarımcılarınızı oluşturabilirsiniz:
- Microsoft.WinForms.Designer.SDK NuGet paketine başvuru ekleniyor.
- Sınıfından
Microsoft.DotNet.DesignTools.Designers.ControlDesigner
devralan bir tür oluşturun. - 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:
Akıllı etiket seçildiğinde, eylem listesi görüntülenir:
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:
- Microsoft.WinForms.Designer.SDK NuGet paketine başvuru ekleniyor.
- öğesinden
Microsoft.DotNet.DesignTools.Designers.Actions.DesignerActionList
devralan yeni bir eylem listesi sınıfı oluşturun. - 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. - Yeni bir tasarımcı oluşturmak için Özel denetim tasarımcıları bölümündeki adımları izleyin.
- 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
. - 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.
Kalıcı iletişim kutusu türü düzenleyicileri
Ö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.
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:
Ö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
.NET Desktop feedback