Skip to main content

ComboBox

Kullanıcının hazır bir listeden tek bir değer seçtiği açılır liste nesnesidir. Şehir, departman, durum ya da kategori gibi belli seçeneklerden birini seçtirmek için kullanılır.

Ne zaman kullanılır?

Seçeneklerin sayısı belli ve sınırlıysa idealdir: il, durum, öncelik, kategori. Seçenekleri elle yazmak yerine listeden seçtirir, böylece yazım hatalarını önler. Çok sayıda seçenek için arama özelliğini (ShowSearch) açabilirsiniz. Serbest metin girişi gerektiğinde TextBox, birden çok seçim gerektiğinde çoklu seçim nesnelerini tercih edin.

Değer tipi: object

Tasarımcı özellikleri

Bir ComboBox seçildiğinde Özellik Görüntüleyici sekmelere ayrılır.

General

ÖzellikAçıklama
NameNesnenin koddaki adı (ör. ComboBox1). Koddan bu adla erişirsiniz.
Field NameVeritabanındaki alanın adı.

Label

Nesnenin yanındaki etiketi yönetir.

ÖzellikAçıklama
Caption / TextEtiketin yazısı (çok dilli olabilir).
PositionEtiketin yeri: solda (Left) veya üstte (Top).
Width / HeightEtiketin boyutu.
FontYazı tipi, kalın / italik / altı çizili.
Show ColonEtiketin sonuna iki nokta (:) ekler.
Horizontal Align / Vertical AlignEtiketin hizası.
VisibleEtiketi gösterir veya gizler.

Data Source

ComboBox'ın seçeneklerini bu sekmeden beslersiniz. Seçenekleri elle girebilir ya da bir veri kaynağına bağlayabilirsiniz.

ÖzellikAçıklama
ItemsElle girilen seçenek listesi. Her satırın bir metni ve bir değeri olur.
Data SourceSeçenekleri besleyen veri kaynağı (sorgu / liste).
Data Source TypeVeri kaynağının türü.
DataKoda gelen ham seçenek verisi (metin/değer çiftleri).
Selected Item ValuesSeçili öğelerin değerleri.
Selected ValuesSeçili değerler listesi.
Text SeparatorBirden çok değer gösterilirken metinleri ayıran karakter.
Value SeparatorBirden çok değer saklanırken değerleri ayıran karakter.

Behavior

ÖzellikAçıklama
ReadOnlyAlanı salt okunur yapar; seçim değiştirilemez.
RequiredAlanı zorunlu yapar; seçim yapılmazsa form kaydedilmez.
ShowSearchAçılır listenin üstüne arama kutusu ekler. Uzun listelerde işe yarar.
AllowClearSeçimi temizleyen küçük bir (x) düğmesi gösterir.
SelectedItemO an seçili olan öğe.
ValueTypeSaklanan değerin türü (metin, sayı, tarih vb.).
DateValueFormatDeğer tarih olduğunda kullanılan biçim.
DecimalValuePrecisionDeğer ondalıklı sayı olduğunda basamak sayısı.
IconExprÖğelerin yanında gösterilecek ikonu belirleyen ifade.
IconMatchersHangi değere hangi ikonun geleceğini eşleştirir.
HideForceRefreshButtonListeyi yenileyen düğmeyi gizler.
Tab IndexTab tuşuyla geçiş sırasını belirler.

Appearance

ÖzellikAçıklama
Visible / Client VisibleNesnenin görünürlüğü.
Enabled / Client EnabledNesnenin aktif olup olmadığı.
PlaceholderSeçim yapılmadan önce görünen soluk ipucu yazısı.
TextSeçili öğenin ekranda görünen metni.
TitleÜzerine gelince çıkan başlık (tooltip).
Size TypeGenişlik davranışı (sabit / esnek).

Olaylar

Bir nesne açılırken olaylar belirli bir sırayla tetiklenir; kullanıcı seçim yapınca da ayrı olaylar çalışır. Doğru kodu doğru olaya yazmak için bu sırayı bilmek işinizi kolaylaştırır.

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

Kullanıcı seçim yaparken: OnValueChangingOnValueChanged

Olaylar iki tarafta çalışabilir: sunucu olayları C# kodunda, istemci olayları tarayıcıdaki TypeScript kodunda. ComboBox'ın iki tarafta sunduğu olaylar farklıdır.

Sunucu olayları (Server)

OlayNe zaman çalışır
OnInitForm açılırken nesne oluşturulduğunda, en başta.
OnLoadOnInit'in hemen ardından, nesne yüklenince.
OnRenderNesne ekrana çizilirken.
OnValueChangingSeçim değişmeden hemen önce (iptal edilebilir).
OnValueChangedKullanıcı yeni bir öğe seçtiğinde. En sık kullanılan olaydır.
OnTextChangingGörünen metin değişmeden hemen önce.
OnTextChangedGörünen metin değiştikten hemen sonra.
OnValidatingDeğer doğrulanırken (geçerli mi diye kontrol edilirken).

İstemci olayları (Client)

Sunucudaki olaylara ek olarak tarayıcı tarafında şunlar da vardır:

OlayNe zaman çalışır
OnDataLoadNesnenin seçenek verisi yüklendiğinde.
OnPreRenderNesne ekrana çizilmeden hemen önce.
OnClick / OnDoubleClickNesneye tıklanınca / çift tıklanınca.
OnPropertyChanging / OnPropertyChangedBir özellik kodla değiştirilmeden önce / sonra.
Olay parametreleri

OnValueChanging / OnTextChanging olaylarının parametresi (args TS, e C#) şunları taşır:

  • newValue / NewValue — seçilmek istenen yeni değer
  • oldValue / OldValue — önceki değer
  • cancel / Canceltrue yapılırsa değişiklik iptal edilir (yalnızca Changing olaylarında)

Changed olaylarında cancel yoktur (değişiklik artık gerçekleşmiştir).

Kod örnekleri

Bir ComboBox'a üç yerden erişebilirsiniz. Sunucu örnekleri turuncu, istemci örnekleri kırmızı çerçevelidir. ComboBox'ın değeri seçili öğenin değeridir; tipi object olduğu için okurken .ToString() ile metne çevirmek pratiktir.

Form kodu (C#, sunucu)

Form kodunda nesneye doğrudan adıyla erişirsiniz:

// Oku (seçili değer)
var secilen = ComboBox1.Value;
string secilenMetin = ComboBox1.Value?.ToString();

// Görünen metni oku
string gorunen = ComboBox1.Text;

// Yaz (listedeki bir değeri seç)
ComboBox1.Value = "ANK";

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

Akış kodunda nesneye Document1.Controls üzerinden erişirsiniz:

// Oku
var secilen = Document1.Controls["ComboBox1"].Value;
string secilenMetin = Document1.Controls["ComboBox1"].Value?.ToString();

// Yaz
Document1.Controls["ComboBox1"].Value = "ANK";

İstemci kodu (TypeScript, tarayıcı)

İstemci tarafında nesnelere this. ile erişilir ve özellik adları küçük harfle yazılır (value, text):

// Oku
const secilen = this.ComboBox1.value;
const gorunen = this.ComboBox1.text;

// Yaz
this.ComboBox1.value = "ANK";
.Value mi .Text mi?

.Value saklanan değerdir (ör. "ANK"), .Text ekranda görünen metindir (ör. "Ankara"). Listeye bir değer yazdığınızda görünen metin otomatik olarak eşleşen öğeden gelir; siz değeri set etmeye odaklanın.

Örnek: seçime göre işlem yapma (OnValueChanging)

OnValueChanging seçim değişmeden hemen önce çalışır; istemediğiniz bir seçimi burada iptal edebilirsiniz. Aşağıdaki örnekte "PASIF" değerinin seçilmesi engellenir.

İstemci (TypeScript):

async ComboBox1_OnValueChanging(args: Controls.EventArgs.IPropertyChangingEventArgs<object>) {
if (args.newValue == "PASIF") {
args.cancel = true; // Seçimi iptal eder
this.showMessage("Uyarı", "Pasif durum seçilemez.", "Validation");
}
}

Sunucu (C#):

void ComboBox1_OnValueChanging(object sender, PropertyChangingEventArgs<object> e)
{
if (e.NewValue?.ToString() == "PASIF")
{
e.Cancel = true;
ShowMessage("Uyarı", "Pasif durum seçilemez.",
Bimser.CSP.FormControls.RuleManager.AlertType.Validation);
}
}

İpuçları

  • Çok sayıda seçeneğiniz varsa ShowSearch özelliğini açın; kullanıcı listede yazarak arar.
  • Seçimin temizlenebilmesi için AllowClear özelliğini açın; alan zorunluysa kapalı tutmak daha güvenlidir.
  • Seçenekleri elle (Items) yerine bir veri kaynağına (Data Source) bağlarsanız listeyi tek yerden güncellersiniz.
  • Değer tipi object olduğundan okurken ?.ToString() kullanmak null hatasını önler.
Tüm tasarımcı özellikleri (tam liste)

General: Name, Field Name

Label: Caption, Text, Position, Left, Width, Height, Font (Bold / Italic / Underline), Ellipsis, Visible, Show Colon, Horizontal Align, Vertical Align, Mark Char, Mark Position

Data Source: Data, DataSource, DataSourceType, Items, SelectedItemValues, SelectedValues, TextSeparator, ValueSeparator

Behavior: AllowClear, DateValueFormat, DecimalValuePrecision, HideForceRefreshButton, IconExpr, IconMatchers, ReadOnly, Required, SelectedItem, ShowSearch, TabIndex, ValueType

Appearance: ClientEnabled, ClientVisible, Enabled, Placeholder, SizeType, Text, Title, Value, Visible

Olaylar (Client): OnInit, OnLoad, OnPreRender, OnRender, OnPropertyChanging, OnPropertyChanged, OnClick, OnDoubleClick, OnDataLoad, OnValueChanging, OnValueChanged, OnTextChanging, OnTextChanged, OnValidating

Olaylar (Server): OnInit, OnLoad, OnRender, OnValueChanging, OnValueChanged, OnTextChanging, OnTextChanged, OnValidating