Buton
Kullanıcının tıklayarak bir işlem başlattığı düğme nesnesidir. Form üzerinde bir hesaplama yapmak, bir alanı doldurmak, kullanıcıya mesaj göstermek ya da özel bir kod çalıştırmak için kullanılır.
Değer tipi: Bu nesnenin bir değeri yoktur. Buton verisi olmayan görsel bir nesnedir (VisualControl); tıklanınca çalışan koddan değerini okumazsınız, sadece bir eylem tetiklersiniz. Bu yüzden .Value özelliği yoktur.
Ne zaman kullanılır?
Kullanıcının açıkça tetiklemesi gereken bir işlem olduğunda kullanın: "Hesapla", "Sorgula", "Temizle" gibi. Onay/ret veya iş akışını ilerleten standart adımlar için butona değil, formun kendi akış adımlarına güvenin. Sadece bilgi göstermek için Label daha uygundur.
Tasarımcı özellikleri
Bir Buton seçildiğinde Özellik Görüntüleyici üç sekmeye ayrılır. Butonun bir veri alanı olmadığı için Field Name ve Size gibi veritabanı özellikleri yoktur.
General
| Özellik | Açıklama |
|---|---|
Name | Nesnenin koddaki adı (ör. Button1). Koddan bu adla erişirsiniz. |
Behavior
| Özellik | Açıklama |
|---|---|
ButtonType | Butonun stilini belirleyen ButtonType enum değeridir: Default, Primary, Dashed, Text, Link. Birincil eylemi Primary, çerçevesiz bağlantı görünümünü Link ya da Text ile verirsiniz. |
Block | true yapılırsa buton bulunduğu alanın tüm genişliğine yayılır. |
Danger | true yapılırsa buton tehlikeli/uyarı rengiyle (kırmızı) gösterilir. Silme gibi geri alınamaz işlemlerde kullanılır. |
Ghost | true yapılırsa buton şeffaf/çerçeveli (hayalet) görünüme geçer. |
Icon | Butonun üzerinde gösterilecek ikon (String). |
TabIndex | Tab tuşuyla geçiş sırasını belirler (Int32). |
Appearance
| Özellik | Açıklama |
|---|---|
Text | Butonun üzerinde yazan yazı. Tipi MultiLanguageText'tir (çok dilli); koddan tek bir string atadığınızda geçerli dile yazılır. |
Title | Fareyle üzerine gelince çıkan ipucu yazısı (MultiLanguageText, çok dilli). |
Caption | Nesnenin başlık bloğu (ControlCaption). |
Visible / Client Visible | Nesnenin görünürlüğü (Boolean). |
Enabled / Client Enabled | Nesnenin aktif olup olmadığı (Boolean). Pasifken butona tıklanamaz. |
Size Type | Genişlik davranışı (Nullable<SizeType>: sabit / esnek). |
Bunlara ek olarak butonun her görsel nesneden devraldığı şu özellikler de vardır: CustomClassName (ek CSS sınıfı), Style ve ContainerStyle (nesnenin ve sardığı hücrenin stili), ContextMenuKey / ContextMenuColumnKey / ContextMenuTarget (sağ tık menüsü bağlama), DefaultEnabled / DefaultClientEnabled (tasarım zamanı varsayılanları) ve Loading.
Olaylar
Butonun yalnızca iki gerçek olayı vardır: OnClick ve OnDoubleClick. Bunlar ServerEvents / ClientEvents listesi üzerinden bağlanır ve VisualControl.OnClick / OnDoubleClick (Object sender, MouseEventArgs e) imzasıyla çalışır. Buton bir veri nesnesi olmadığı için OnValueChanged, OnDataLoad gibi veri/yaşam döngüsü olaylarını tetiklemez.
Olaylar iki tarafta çalışabilir: sunucu olayları C# kodunda, istemci olayları tarayıcıdaki TypeScript kodunda. Butonda en sık kullanılan olay istemci tarafındaki OnClick'tir.
Sunucu olayları (Server)
| Olay | Ne zaman çalışır |
|---|---|
OnClick | Kullanıcı butona tıklayınca. Butonun en sık kullanılan olayıdır. |
OnDoubleClick | Kullanıcı butona çift tıklayınca. |
İstemci olayları (Client)
| Olay | Ne zaman çalışır |
|---|---|
OnClick | Kullanıcı butona tıklayınca. Sunucuya gitmeden tarayıcıda çalışır. |
OnDoubleClick | Kullanıcı butona çift tıklayınca. |
Kod örnekleri
Butonun bir değeri olmadığı için .Value okumaz/yazmazsınız. Bunun yerine butonla şunları yaparsınız: tıklanınca çalışacak kodu yazmak, görünürlüğünü/aktifliğini kontrol etmek, uzun süren işlemlerde yükleniyor göstergesini açmak ve gerekirse tıklamayı koddan tetiklemek. Sunucu örnekleri turuncu, istemci örnekleri kırmızı çerçevelidir.
Form kodu (C#, sunucu)
Form kodunda butona doğrudan adıyla erişip görünürlüğünü, aktifliğini ve yazısını ayarlarsınız. Text MultiLanguageText olduğu için tek string atadığınızda geçerli dile yazılır:
// Butonu gizle / göster
Button1.Visible = false;
Button1.Show(); // Çalışma anı yardımcısı: göster
Button1.Hide(); // Çalışma anı yardımcısı: gizle
// Butonu pasifleştir / aktifleştir
Button1.Enabled = false;
// Buton yazısını değiştir (MultiLanguageText, tek dil atanıyor)
Button1.Text = "Kaydet";
// Buton stilini değiştir
Button1.ButtonType = Bimser.CSP.FormControls.Enums.ButtonType.Primary;
// Tıklamayı koddan tetikle
Button1.FireClick();
Akış (Flow) kodu (C#, sunucu)
Akış kodunda butona Document1.Controls["..."] indeksleyicisi üzerinden erişirsiniz (formun nesnelerine ulaşmanın doğrulanmış yoludur). Bu indeksleyici jenerik bir Control sapı döndürür; yalnızca .Text / .Value / .Type / .Rows ve GetPropertyValue<T>() üyelerini açar. .Visible / .Enabled gibi güçlü tipli üyeler bu sap üzerinden erişilebilir değildir; görünürlük/aktiflik için Form (Controller) kodunda butonun kendisine (Button1.Visible, Button1.Show()/Hide()) erişin:
// Buton yazısını değiştir (jenerik Control sapı .Text'i açar)
Document1.Controls["Button1"].Text = "Kaydet";
İstemci kodu (TypeScript, tarayıcı)
İstemci tarafında nesnelere this. ile erişilir ve özellik adları küçük harfle yazılır (visible, enabled, text):
this.Button1.visible = false;
this.Button1.enabled = false;
this.Button1.text = "Kaydet";
Buton, TextBox gibi bir veri nesnesi değildir; saklanan bir değeri yoktur. Bir butonla yapacağınız iş OnClick olayına kod yazmaktır. Kullanıcının seçimini saklamak istiyorsanız butonu bir veri nesnesiyle (ör. CheckBox) birlikte kullanın.
Örnek: tıklanınca işlem yapma (OnClick)
OnClick butona tıklandığında çalışır. Aynı olayı hem istemcide (TypeScript) hem sunucuda (C#) yazabilirsiniz.
İstemci (TypeScript):
async Button1_OnClick(args: Controls.EventArgs.IControlEventArgs) {
this.Aciklama.value = "Onaylandı"; // Başka bir alanı doldurur
this.showMessage("Bilgi", "İşlem tamamlandı.", "Info");
}
Sunucu (C#):
void Button1_OnClick(object sender, MouseEventArgs e)
{
Aciklama.Value = "Onaylandı"; // Başka bir alanı doldurur
ShowMessage("Bilgi", "İşlem tamamlandı.",
Bimser.CSP.FormControls.RuleManager.AlertType.Info);
}
Örnek: uzun işlem sırasında yükleniyor göstergesi (Loading)
Loading özelliği true iken butonun üzerinde dönen bir bekleme göstergesi çıkar. ShowLoading(), HideLoading() ve ToggleLoading() metotları bu özelliği açıp kapatmanın hazır yoludur. Uzun süren bir işlemde butonu hem pasifleştirip hem göstergeyi açmak çift tıklamayı engellemenin en yaygın yoludur.
İstemci (TypeScript):
async Button1_OnClick(args: Controls.EventArgs.IControlEventArgs) {
this.Button1.enabled = false; // Çift tıklamayı engelle
this.Button1.loading = true; // Göstergeyi aç
try {
await this.someLongRunningCall(); // Uzun süren işlem
} finally {
this.Button1.loading = false; // Göstergeyi kapat
this.Button1.enabled = true; // Butonu geri aç
}
}
Sunucu (C#):
void Button1_OnClick(object sender, MouseEventArgs e)
{
Button1.ShowLoading(); // Loading = true
// ... uzun süren işlem ...
Button1.HideLoading(); // Loading = false
}
İpuçları
- Geri alınamaz işlemler (silme gibi) için
Dangerözelliğini açın; kullanıcı butonun kırmızı olduğunu görüp daha dikkatli davranır. - Butonu form genişliğinde göstermek için
Blocközelliğini kullanın; ayrıca genişlik vermenize gerek kalmaz. - Birincil eylemi vurgulamak için
ButtonType = Primary, ikincil/çerçevesiz görünüm içinTextya daLinkkullanın. - Sık tıklanan ya da yanlışlıkla iki kez tetiklenebilecek işlemlerde,
OnClickiçinde butonuenabled = falseyapıpShowLoading()çağırarak çift tıklamayı engelleyin; işlem bitinceHideLoading()ile geri açın. - Bir butonun tıklamasını koddan tetiklemek isterseniz
FireClick()kullanın; böyleceOnClickmantığını başka bir yerden de çalıştırabilirsiniz.
Tüm tasarımcı özellikleri (tam liste)
General: Name
Behavior: ButtonType (Default / Primary / Dashed / Text / Link), Block, Danger, Ghost, Icon, TabIndex
Appearance: Text (MultiLanguageText), Title (MultiLanguageText), Caption, Visible, Client Visible, Enabled, Client Enabled, Size Type
Devralınan (VisualControl): CustomClassName, ControlId, Style, ContainerStyle, ContextMenuKey, ContextMenuColumnKey, ContextMenuTarget, DefaultEnabled, DefaultClientEnabled, Loading, ServerEvents, ClientEvents, ExecutedServerEvents
Çalışma anı metotları (VisualControl): Show(), Hide(), ShowLoading(), HideLoading(), ToggleLoading(), FireClick(), ScrollTo(), OnClick(Object, MouseEventArgs), OnDoubleClick(Object, MouseEventArgs)
Olaylar (Server): OnClick, OnDoubleClick
Olaylar (Client): OnClick, OnDoubleClick