Bir butonun click olayı aşağıdaki gibi olsun. kod yazan yerde istediğimiz işler yapılıyor olsun
private void button2_Click(object sender, EventArgs e)
{
// kod
}
Başka bir olay olduğunda buton olayını nasıl çalıştırabiliirm? nasıl yazılacağını kestiremedim.
Mesela buton 5 basılınca buton 2 olayı da çalıştırılacak
private void button5_Click(object sender, EventArgs e)
{
// başka kod
button2_Click(this? vs? ne ?); // < burada diğer buton olayı nasıl yazılacak?
}
Solution explorerda formx.designer.cs yi açıp, button visual studio tarafından oluşturulurken, event kısmını şu şekilde değiştirirsen olur:
this.button5.Click += new System.EventHandler(this.button2_Click);
Sanal olarak tıklamak için de bir fonksiyon olmalı. button5.Click() gibi. Doğrudan event handler'ı çağırmak yerine sanal tıklama yapabilirsin.
Buton click içeriğini ayır bir fonksiyon olarak yaz.
private void button2_Click(object sender, EventArgs e)
{
cagir_fonksiyon ();// kod
}
private void button4_Click(object sender, EventArgs e) //öneğin
{
cagir_fonksiyon ();// kod
}
ondan sonra fonksiyonu istediğin yerden çağır.
public void cagir_fonksiyon()
{
//kod
}
c# button click event fire diye aratırsan farklı yöntemler bulabilirsin.
private void button2_Click(object sender, EventArgs e)
{
//button3_Click(new object(), EventArgs.Empty);//bu da iş görür
this.InvokeOnClick(button3, EventArgs.Empty);//bu daha iyi iş görür
}
private void button3_Click(object sender, EventArgs e)
{
MessageBox.Show("Fire");
}
Kolay gelsin.
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("buuton1 fire");
}
private void button2_Click(object sender, EventArgs e)
{
button1_Click(button2, e);
}
button5.PerformClick();
Bizden Elektrik Alamadın Tabi, Ondan Eliyorsun. Neyse Seneye ki En Güzel Kod Yarışmasına Gireriz bizde.
Ben de yukarıda bahsetmiştim ama gözden kaçmış. Zaten fonksiyon adını yanlış hatırlamışım. C#'la en son 2008'de uğraşmıştım.
Peki Buton u perform klikle yaptık ama olduda başka bir nesnenin bir olayını tetiklemek istedik ozaman T2, güzellik para etmiyor ondan diyorum.
Alıntı yapılan: muhittin_kaplan - 02 Kasım 2013, 01:16:38
Peki Buton u perform klikle yaptık ama olduda başka bir nesnenin bir olayını tetiklemek istedik ozaman T2, güzellik para etmiyor ondan diyorum.
Hocam modifier'lara göre bütün Button nesnelerinin Click eventine bu yolla ulaşabiliyorsunuz. Herhangi bir event için de direkt olayı tetiklemenin doğru olmadığını okumuştum bir yerde.
Bu event'lar kesme niteliğinde olduğundan thread'ler arası çakışma olmaması için bu yol daha güvenli(diye biliyorum...)
Başka bir nesnenin olayını tetiklemek ihtiyacı hissediliyorsa bence tasarımda bir mantık hatası vardır, gözden geçirilmesi gerekir.
Programda mantık hatası var. Acemilik, cahillik diyelim. Butondaki kodları taşımak zor geldiğinden öyle yapmak istedim. ihtiyac kadar hazır programı kurcalıyorum.
-