TabMenu
Form içeriğini sekmelere bölen menü nesnesidir. Her sekme ayrı bir bölümü temsil eder; kullanıcı sekmelere tıklayarak bölümler arasında geçiş yapar. Uzun ve kalabalık formları düzenli parçalara ayırmak için kullanılır.
Değer tipi: Bu nesnenin bir değeri yoktur. TabMenu bir kapsayıcı (container) nesnedir; içine başka nesneler yerleştirilir. Seçili sekme ise SelectedIndex (sıra numarası) ve SelectedItem (sekmenin kendisi) üzerinden okunur.
Ne zaman kullanılır?
Bir forma çok sayıda alan sığdırmanız gerektiğinde idealdir. Örneğin "Genel Bilgiler", "Adres" ve "Belgeler" bölümlerini üç ayrı sekmeye koyabilirsiniz. Böylece kullanıcı her şeyi tek ekranda görmek yerine bölüm bölüm ilerler.
Sadece görsel bir çerçeve isterseniz Panel, kayan içerik isterseniz ScrollView daha uygundur. Sekme yapısı yerine yatay alt menü isterseniz bu nesne tam yerindedir.
Tasarımcı özellikleri
Bir TabMenu seçildiğinde Özellik Görüntüleyici sekmelere ayrılır. Sekmeler ise nesnenin kendi tasarım yüzeyinden eklenir.
General
| Özellik | Açıklama |
|---|---|
Name | Nesnenin koddaki adı (ör. TabMenu1). Koddan bu adla erişirsiniz. |
Behavior
| Özellik | Açıklama |
|---|---|
ReadOnly | Nesneyi salt okunur duruma alır. |
SelectedIndex | Seçili sekmenin sıra numarası (0'dan başlar). Koddan okunup yazılabilir (Int32). |
SelectedItem | O an seçili olan sekme nesnesi (TabMenuItem, salt okunur). |
TabItems | Nesnedeki tüm sekmelerin listesi (List<TabMenuItem>). |
Appearance
| Özellik | Açıklama |
|---|---|
Visible / Client Visible | Nesnenin görünürlüğü. Client Visible sadece tarayıcı tarafında etkilidir. |
Enabled / Client Enabled | Nesnenin aktif olup olmadığı. Client Enabled sadece tarayıcı tarafında etkilidir. |
Caption | Nesnenin etiketi (ControlCaption). |
Title | Nesnenin başlığı (MultiLanguageText, çok dilli olabilir). |
Style / ContainerStyle | Nesnenin ve kapsayıcısının görsel stili. |
Sekme nesnesi (TabMenuItem)
SelectedItem ve TabItems içindeki her sekme bir TabMenuItem nesnesidir. Sekmeyi indeks yerine adıyla yönetmek için bu alanları kullanırsınız:
| Alan | Tip | Açıklama |
|---|---|---|
Key | String | Sekmenin anahtarı (kod tarafında sekmeyi tanımlamak için en güvenilir alan). |
Title | Dictionary<String, String> | Sekmenin çok dilli başlığı (dil kodu → metin). |
Icon | String | Sekmenin simgesi. |
OrderNo | Nullable<Int32> | Sekmenin sıra numarası. |
Selected | Nullable<Boolean> | Sekmenin seçili olup olmadığı. |
Enabled | Nullable<Boolean> | Sekmenin aktif olup olmadığı (tek bir sekmeyi pasifleştirmek için). |
Olaylar
TabMenu, kullanıcı bir sekmeye tıkladığında tek bir olay tetikler: TabMenuItemClick. Bu olay hem sunucu (C#) hem istemci (TypeScript) tarafında ele alınabilir.
Sunucu olayları (Server)
| Olay | Ne zaman çalışır |
|---|---|
TabMenuItemClick | Kullanıcı bir sekmeye tıkladığında. Sunucudaki giriş noktası OnTabMenuItemClick(object sender, TabMenuItemClickEventArgs e) metodudur. |
İstemci olayları (Client)
| Olay | Ne zaman çalışır |
|---|---|
TabMenuItemClick | Kullanıcı bir sekmeye tıkladığında (tarayıcı tarafında). |
TabMenuItemClick olayının parametresi (e C#) Bimser.CSP.FormControls.Events.TabMenuItemClickEventArgs tipindedir ve şu alanı taşır:
Name(String) — tıklanan sekmeyi belirten ad. Hangi sekmeye tıklandığını indekse güvenmeden buradan öğrenirsiniz.
Kod örnekleri
TabMenu bir kapsayıcıdır; değeri yoktur ama seçili sekmesi koddan yönetilebilir. Sunucu örnekleri turuncu, istemci örnekleri kırmızı çerçevelidir.
Form kodu (C#, sunucu)
Form kodunda nesneye doğrudan adıyla erişirsiniz. Seçili sekmeyi okuyabilir veya değiştirebilirsiniz:
// Seçili sekmenin sırasını oku (0'dan başlar)
int aktifSekme = TabMenu1.SelectedIndex;
// İkinci sekmeye geç
TabMenu1.SelectedIndex = 1;
// Seçili sekmeyi adıyla (Key) öğren
string aktifKey = TabMenu1.SelectedItem.Key;
// Nesneyi gizle
TabMenu1.Visible = false;
Sekmeyi adıyla (Key) bulup seçme
İndeks yerine sekmeleri Key ile yönetmek, sekme sırasını tasarımda değiştirseniz bile kodun çalışmaya devam etmesini sağlar. TabItems üzerinde dolaşarak ilgili sekmeyi bulup seçebilirsiniz:
// "Belgeler" anahtarlı sekmeyi bulup aktifleştir
for (int i = 0; i < TabMenu1.TabItems.Count; i++)
{
if (TabMenu1.TabItems[i].Key == "Belgeler")
{
TabMenu1.SelectedIndex = i;
break;
}
}
Tek bir sekmeyi pasifleştirme
Her sekmenin kendi Enabled alanı vardır; sadece o sekmeyi kullanıma kapatabilirsiniz:
// "Belgeler" sekmesini kullanıcıya kapat
foreach (var sekme in TabMenu1.TabItems)
{
if (sekme.Key == "Belgeler")
{
sekme.Enabled = false;
}
}
Akış (Flow) kodu (C#, sunucu)
Akış kodunda nesneye Document1.Controls üzerinden erişirsiniz:
// Seçili sekmenin sırasını oku
int aktifSekme = Document1.Controls["TabMenu1"].SelectedIndex;
// Üçüncü sekmeye geç
Document1.Controls["TabMenu1"].SelectedIndex = 2;
// Nesneyi pasifleştir
Document1.Controls["TabMenu1"].Enabled = false;
İstemci kodu (TypeScript, tarayıcı)
İstemci tarafında nesnelere this. ile erişilir ve özellik adları küçük harfle yazılır:
// Seçili sekmenin sırasını oku
let aktifSekme = this.TabMenu1.selectedIndex;
// İlk sekmeye geç
this.TabMenu1.selectedIndex = 0;
// Nesneyi gizle / göster
this.TabMenu1.visible = false;
SelectedIndex her zaman 0'dan başlar: birinci sekme 0, ikinci sekme 1. Ancak indeks, tasarımda sekme sırasını değiştirdiğinizde kırılır. Sekmeyi hangi sekme olduğundan emin olmak istediğinizde SelectedItem.Key değerini okuyun veya TabItems üzerinde Key ile arayın.
Örnek: tıklanan sekmeye göre işlem yapma (TabMenuItemClick)
TabMenuItemClick kullanıcı bir sekmeye tıkladığında çalışır. Hangi sekmenin tıklandığını olay parametresindeki e.Name üzerinden öğrenir, ona göre işlem yaparsınız. Aşağıdaki örnekte "Belgeler" sekmesine geçildiğinde bir bilgi mesajı gösterilir.
Sunucu (C#):
void TabMenu1_TabMenuItemClick(object sender, Bimser.CSP.FormControls.Events.TabMenuItemClickEventArgs e)
{
// Tıklanan sekmeyi adıyla kontrol et (indekse güvenmeden)
if (e.Name == "Belgeler")
{
ShowMessage("Bilgi", "Belgeler bölümüne geçtiniz.",
Bimser.CSP.FormControls.RuleManager.AlertType.Info, null);
}
}
ShowMessage çağrısı dört parametre alır: başlık, metin, AlertType ve vurgulanacak alanların listesi (List<String>; gerek yoksa null geçilir). AlertType değerleri: Success, Error, Warning, Info, Validation, Blocked, SevereWarning.
İpuçları
- TabMenu yalnızca bir kapsayıcıdır; veri tutmaz. Form alanlarını sekmelerin içine yerleştirin, koddan o alanlara kendi adlarıyla erişin.
- Zorunlu (
Required) alanları farklı sekmelere dağıtırsanız, kullanıcı dolu olmayan sekmedeki alanı fark etmeyebilir. Kayıt öncesi tüm sekmelerdeki zorunlu alanların dolduğundan emin olun. - Belirli bir adımda kullanıcıyı doğru sekmeye yönlendirmek için
SelectedIndexdeğerini koddan ayarlayın; sekmeyi adıyla bulmak istersenizTabItemsiçindeKeyile arayın. - Bir sekmenin tamamını duruma göre kullanıma kapatmak için ilgili
TabMenuItemnesnesininEnabledalanınıfalseyapın.
Tüm tasarımcı özellikleri (tam liste)
General: Name
Behavior: ReadOnly, SelectedIndex, SelectedItem, TabItems
Appearance: Visible, Client Visible, Enabled, Client Enabled, Caption, Title, Style, ContainerStyle
TabMenuItem alanları: Key, Title, Icon, OrderNo, Selected, Enabled
Olaylar (Server): TabMenuItemClick
Olaylar (Client): TabMenuItemClick