Ana içeriğe geç

Section

Form üzerindeki nesneleri satır ve sütunlara bölerek düzenli bir şekilde yerleştirmenizi sağlayan yerleşim (layout) nesnesidir. Kendi başına bir veri tutmaz; içine koyduğunuz diğer nesneleri hizalar.

Bu nesnenin bir değeri yoktur.

Ne zaman kullanılır?

Formdaki nesneleri yan yana ya da alt alta düzenli kolonlara dizmek istediğinizde kullanılır. Örneğin "Ad" ve "Soyad" alanlarını aynı satırda iki kolona, "Adres" alanını ise tek bir geniş kolona yerleştirebilirsiniz. Bir Section'ı kolonlara bölmek için içine Column nesneleri yerleştirilir. Başlığı açılıp kapanan gruplama için Panel, sekmeli yerleşim için Tabs daha uygundur. Section başlıksız, sade bir yerleşim ızgarası sunar.

Tasarımcı özellikleri

Section bir yerleşim nesnesidir; içine sürüklediğiniz nesneleri taşıyan bir kapsayıcıdır. Bir Section seçildiğinde Özellik Görüntüleyici'de temel yerleşim ayarları görünür.

Sınıf zinciri: Section : LayoutControl : BaseControl. Bu zincir, bir giriş alanına ait olan Value, Text, Enabled, Visible, Placeholder, TextAlign, TabIndex gibi özellikleri içermez. Section'ın güçlü tipli sınıfında yalnızca aşağıdaki üyeler vardır: Name, ControlId, Items, Layout, DesignerProps, ServerEvents, ClientEvents, ExecutedServerEvents.

General

ÖzellikAçıklama
NameNesnenin koddaki adı (ör. Section1). Koddan bu adla erişirsiniz.

Yerleşim (Layout)

ÖzellikTipAçıklama
LayoutContainerLayoutSection'ın yerleşim ızgarasını tanımlar. Alanları: Width (genişlik), Padding (iç boşluk), Visible (Nullable<Boolean>, kapsayıcının görünürlüğü), ClientVisible (Nullable<Boolean>, istemci tarafı görünürlük).
DesignerPropsDesignerPropsTasarımcıya ait ayarlar. Alanları: Layout (ContainerLayout) ve AllowAutoClear (Boolean).
ItemsList<String>Section içine eklenen alt nesnelerin adlarının listesidir (gerçek nesneler değil, isimleri). Tasarımcıda nesneleri sürükleyip bıraktıkça bu liste otomatik dolar.
Section'ın değeri ve doğrudan görünürlük özelliği yoktur

Section bir kapsayıcı/yerleşim nesnesidir. Kullanıcının veri girdiği bir alan değildir; bu yüzden Value veya Text özelliği bulunmaz.

Daha önemlisi: güçlü tipli Section1 referansı doğrudan bir Visible veya Enabled özelliği de sunmaz (bunlar Section / LayoutControl / BaseControl sınıflarında tanımlı değildir). Görünürlüğü yönetmek için Section1.Layout.Visible (ve istemci tarafı için Section1.Layout.ClientVisible) alanlarını kullanırsınız; bunlar ContainerLayout üzerinde tanımlı Nullable<Boolean> alanlardır. Bkz. Kod örnekleri.

Olaylar

Section bir yerleşim nesnesi olduğu için kullanıcı etkileşimine dayalı değer olayları (değişme, seçilme vb.) sunmaz. Yalnızca BaseControl üzerinden gelen yaşam döngüsü kancaları geçerlidir.

Açılış sırası: OnInitOnLoadOnPreRenderOnRender

Bu kancalar BaseControl üzerinde tanımlıdır (OnInit, OnLoad, OnPreRender, OnRender, OnPropertyChanging, OnPropertyChanged). Section'a özgü ek bir olay yoktur; OnTextChanged, OnValueChanged gibi giriş olayları bu nesnede bulunmaz.

OlayNe zaman çalışır
OnInitForm açılırken nesne oluşturulduğunda, en başta.
OnLoadOnInit'in hemen ardından, nesne yüklenince.
OnPreRenderNesne ekrana çizilmeden hemen önce.
OnRenderNesne ekrana çizilirken.
OnPropertyChanging / OnPropertyChangedBir özellik kodla değiştirilmeden önce / sonra.

Kod örnekleri

Section'ın bir değeri olmadığı için kod tarafında genellikle yalnızca görünürlüğünü değiştirirsiniz. Görünürlüğü Section1.Layout üzerinden yönetirsiniz; güçlü tipli Section1 referansının doğrudan bir Visible/Enabled özelliği yoktur. Sunucu örnekleri turuncu, istemci örnekleri kırmızı çerçevelidir.

Akış (Flow) kodu (C#, sunucu)

Akış kodunda jenerik Document1.Controls["Section1"] sapı yalnızca Text/Value/Type/Rows ve GetPropertyValue<T> üyelerini sunar; bu sapta Visible/Enabled yoktur. Görünürlük için tipli Section1 referansının Layout alanını kullanın:

// Section'ı gizle veya göster (Layout üzerinden)
Section1.Layout.Visible = false; // ContainerLayout.Visible (Nullable<bool>)

// İstemci tarafı görünürlük
Section1.Layout.ClientVisible = false; // ContainerLayout.ClientVisible (Nullable<bool>)

// TODO: Document1.Controls["Section1"].Visible / .Enabled YOKTUR; jenerik sapta bu üyeler bulunmaz, derlenmez.

Form kodu (C#, sunucu)

Form kodunda da aynı kural geçerlidir: güçlü tipli Section1 referansı yerleşim üyelerini (Items, Layout, DesignerProps) taşır; görünürlük için Layout alanını kullanın.

// DOĞRU: görünürlük Layout üzerinden
Section1.Layout.Visible = false; // ContainerLayout.Visible (Nullable<bool>)

// İstemci tarafı görünürlük
Section1.Layout.ClientVisible = false; // ContainerLayout.ClientVisible (Nullable<bool>)

// TODO: Section1.Visible / Section1.Enabled YOKTUR; derlenmez.

İstemci kodu (TypeScript, tarayıcı)

İstemci tarafında nesneye this. ile erişirsiniz. İstemci görünürlüğü, tipli referansın Layout.ClientVisible alanı üzerinden yönetilir:

// Section'ı istemci tarafında gizle veya göster
this.Section1.Layout.ClientVisible = false;
Section ile düzeni kurun, mantığı alanlara bırakın

Section yalnızca yerleşim içindir; doğrulama veya hesaplama gibi mantığı içindeki nesnelere (TextBox, ComboBox vb.) yazın. Bir grup alanı tek seferde gizlemek/göstermek için onları aynı Section içine koyup Section1.Layout.Visible ile yönetmek en pratik yöntemdir.

İpuçları

  • Aynı satırda birden fazla alanı yan yana göstermek için Section'ı Column nesnelerine bölün; her kolona bir nesne yerleştirin.
  • Koşula bağlı olarak gizlenecek alanları aynı Section içinde toplayın; böylece tek bir Section1.Layout.Visible ataması ile hepsini birlikte gösterip gizleyebilirsiniz.
  • Görünürlük için her zaman Section1.Layout.Visible (istemci tarafı için Section1.Layout.ClientVisible) kullanın; tipli Section1 referansının doğrudan bir Visible/Enabled özelliği yoktur ve jenerik Document1.Controls["Section1"] sapı da bu üyeleri sunmaz.
  • Section'ın değeri olmadığı için OnValueChanged gibi olaylar yoktur; iş mantığını içindeki veri nesnelerine yazın.
  • Açılıp kapanan başlıklı bir gruplama gerekiyorsa Panel, sekmeli yapı gerekiyorsa Tabs nesnesini tercih edin.
Tüm tasarımcı özellikleri (tam liste)

Section : LayoutControl : BaseControl zincirinde tanımlı tipli üyeler:

General: Name, ControlId

Yerleşim (Layout): Layout (ContainerLayout: Width, Padding, Visible, ClientVisible), DesignerProps (DesignerProps: Layout, AllowAutoClear), Items (List<String>)

Olaylar: ServerEvents, ClientEvents, ExecutedServerEvents (List<EventItem> / List<ControlExecutedServerEvent>)

Yaşam döngüsü kancaları (BaseControl): OnInit, OnLoad, OnPreRender, OnRender, OnPropertyChanging, OnPropertyChanged

Görünürlük: Tipli Section sınıfında doğrudan Visible / Enabled / ClientVisible yoktur; görünürlük Section1.Layout.Visible ve Section1.Layout.ClientVisible (ContainerLayout üzerinde Nullable<Boolean>) alanları üzerinden yönetilir. Jenerik Document1.Controls["Section1"] sapı da bu üyeleri sunmaz; yalnızca Text/Value/Type/Rows/GetPropertyValue<T> sağlar.