Skip to main content

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

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

Behavior

ÖzellikAçıklama
ButtonTypeButonun 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.
Blocktrue yapılırsa buton bulunduğu alanın tüm genişliğine yayılır.
Dangertrue yapılırsa buton tehlikeli/uyarı rengiyle (kırmızı) gösterilir. Silme gibi geri alınamaz işlemlerde kullanılır.
Ghosttrue yapılırsa buton şeffaf/çerçeveli (hayalet) görünüme geçer.
IconButonun üzerinde gösterilecek ikon (String).
TabIndexTab tuşuyla geçiş sırasını belirler (Int32).

Appearance

ÖzellikAçıklama
TextButonun üzerinde yazan yazı. Tipi MultiLanguageText'tir (çok dilli); koddan tek bir string atadığınızda geçerli dile yazılır.
TitleFareyle üzerine gelince çıkan ipucu yazısı (MultiLanguageText, çok dilli).
CaptionNesnenin başlık bloğu (ControlCaption).
Visible / Client VisibleNesnenin görünürlüğü (Boolean).
Enabled / Client EnabledNesnenin aktif olup olmadığı (Boolean). Pasifken butona tıklanamaz.
Size TypeGeniş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)

OlayNe zaman çalışır
OnClickKullanıcı butona tıklayınca. Butonun en sık kullanılan olayıdır.
OnDoubleClickKullanıcı butona çift tıklayınca.

İstemci olayları (Client)

OlayNe zaman çalışır
OnClickKullanıcı butona tıklayınca. Sunucuya gitmeden tarayıcıda çalışır.
OnDoubleClickKullanı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";
Butonda değer aramayın

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çin Text ya da Link kullanın.
  • Sık tıklanan ya da yanlışlıkla iki kez tetiklenebilecek işlemlerde, OnClick içinde butonu enabled = false yapıp ShowLoading() çağırarak çift tıklamayı engelleyin; işlem bitince HideLoading() ile geri açın.
  • Bir butonun tıklamasını koddan tetiklemek isterseniz FireClick() kullanın; böylece OnClick mantığı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