﻿
{"id":123,"date":"2012-03-10T20:51:40","date_gmt":"2012-03-10T20:51:40","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=123"},"modified":"2019-02-08T21:21:58","modified_gmt":"2019-02-08T21:21:58","slug":"cta-birden-fazla-kontrolu-tek-olaya-baglamak","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/cta-birden-fazla-kontrolu-tek-olaya-baglamak\/","title":{"rendered":"C# Birden Fazla Kontrol\u00fc Tek Olaya Ba\u011flamak"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Bu yaz\u0131mda C#&#8217;ta birden fazla kontrol\u00fcn tek olaya nas\u0131l ba\u011fland\u0131\u011f\u0131n\u0131 g\u00f6rece\u011fiz.Farkl\u0131 kontrol tiplerini ayn\u0131 olaya ba\u011flayabiliriz.Bu durumda hangi kontrol\u00fcn olay\u0131n\u0131n tetiklendi\u011fini nas\u0131l bulaca\u011f\u0131m\u0131z\u0131 g\u00f6rece\u011fiz.<br \/>\n<!--more--><a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2012\/03\/formkontroller.png\"><img loading=\"lazy\" decoding=\"async\" title=\"Form Kontroller\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2012\/03\/formkontroller.png\" alt=\"Form Kontroller\" width=\"295\" height=\"136\" \/><\/a><br \/>\nFormumuzda \u00fc\u00e7 adet button,bir adet textbox ve bir adette checkbox var.Ben \u00f6rneklerimi bu kontroller \u00fczerinden g\u00f6sterece\u011fim.\u00d6rnek olarak Click olay\u0131 \u00fczerinden yaz\u0131m\u0131 devam ettirece\u011fim.Sizler di\u011fer olaylar\u0131 kullanabilirsiniz.<\/p>\n<p><em><strong>!!Olaylarda bir metotdur.<\/strong><\/em><\/p>\n<p>Formdaki b\u00fct\u00fcn kontrollerin Clik olay\u0131n\u0131 &#8220;tikla&#8221; metoduna ba\u011flayal\u0131m.(Bu i\u015flemi yapabilmek i\u00e7in \u00f6ncelikle tikla metodunu yaz\u0131n\u0131z.Sonra herhangi bir kontrol\u00fcn Properties-Events b\u00f6l\u00fcm\u00fcnden Click \u00f6zelli\u011fine ba\u011flayabilirsiniz.)<\/p>\n<hr \/>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n\/\/tikla Metodu\r\n private void tikla(object sender, EventArgs e)\r\n        {\r\n\r\n        }\r\n<\/pre>\n<hr \/>\n<p>Asl\u0131nda bu yaz\u0131n\u0131n ba\u015fl\u0131\u011f\u0131ndan anla\u015f\u0131lan i\u00e7erik buraya kadar anlat\u0131ld\u0131.\u015eimdi yaz\u0131y\u0131 sonland\u0131rmam gerekiyor ama as\u0131l mevzuya yeni geldik.Yukardaki g\u00f6rd\u00fc\u011f\u00fcn\u00fcz metod textboxa, buttonlardan birine ya da checkboxa bas\u0131nca cal\u0131sacakt\u0131r.Ancak hangi kontrole t\u0131klanm\u0131\u015f oldu\u011funu \u00f6\u011frenmek isteyebilir ona g\u00f6rede i\u015flem yapt\u0131rmak ihtiyac\u0131 duyabiliriz.<br \/>\nHangi kontrole t\u0131kland\u0131\u011f\u0131, tikla metodunun ilk parametresi olan &#8220;object sender&#8221; \u00a0komutunda gizlidir.Object tipinden sender isimli bu de\u011fi\u015fken sayesinde biz t\u0131klanan kontrol\u00fcn t\u00fcr\u00fcn\u00fc alabiliriz.<\/p>\n<hr \/>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nprivate void tikla(object sender, EventArgs e)\r\n        {\r\n            MessageBox.Show(sender.GetType().ToString());\r\n        }\r\n<\/pre>\n<hr \/>\n<p>Yukar\u0131daki tikla metodu \u00e7al\u0131\u015ft\u0131\u011f\u0131nda mesaj kutusunda,tikla metodunu tetikleyen kontrol\u00fcn tipi yazd\u0131r\u0131lacakt\u0131r.Buradaki GetType() metodu sayesinde de\u011fi\u015fkenin tipini \u00f6\u011frenebiliyoruz.T\u0131klanan kontrol\u00fcn tipi sender isimli object de\u011fi\u015fkene g\u00f6nderiliyorsa bu metod sayesindede de\u011fi\u015fkenin tipini \u00f6\u011frenebiliyoruz.<\/p>\n<p>\u015eimdi mevzuyu birazdaha derinle\u015ftirelim.Ben button1 adl\u0131 Button nesnesine t\u0131klad\u0131\u011f\u0131m zaman sender adl\u0131 object de\u011fi\u015fkenine bast\u0131\u011f\u0131m kontrol\u00fcn tipi gidecektir.\u00d6yle mi?Evet \u00f6yle.Yani Button nesnesine bast\u0131\u011f\u0131m i\u00e7in Button tipi gidecektir.O halde sender de\u011fi\u015fkeni Button \u00f6zelliklerini ta\u015f\u0131mas\u0131 laz\u0131m.Ancak &#8220;sender.&#8221; yaz\u0131nca bana Button \u00f6zellikleri gelmiyor..??<br \/>\nSebebi sender de\u011fi\u015fkeni object tipinde bir de\u011fi\u015fken oldu\u011fu i\u00e7in,Button tipi object tipine ba\u011flan\u0131rken &#8220;Boxing&#8221; e u\u011frar.E\u011fer sender de\u011fi\u015fkenini &#8220;Unboxing&#8221; yaparsak Button \u00f6zelliklerini kullanabiliriz.(Boxing,Unboxing kavramlar\u0131n\u0131 <a href=\"http:\/\/www.gencayyildiz.com\/blog\/c-var-ve-object-degiskenleri\/\" target=\"_blank\">buradan<\/a> daha ayr\u0131nt\u0131l\u0131 inceleyebilirsiniz.)<\/p>\n<hr \/>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n private void tikla(object sender, EventArgs e)\r\n        {\r\n          Button b = (Button)sender;\r\n \/\/sender de\u011fi\u015fkeninin unboxing yap\u0131lm\u0131\u015f hali b de\u011fi\u015fkenine aktar\u0131ld\u0131.\r\n          b.Text=&quot;123&quot;;\r\n        }\r\n<\/pre>\n<hr \/>\n<p>Yukardaki gibi &#8220;Unboxing&#8221; yapt\u0131ktan sonra Button \u00f6zelliklerini kullanabiliriz demektir.<\/p>\n<p>Mevzuyu bir ad\u0131m daha derinlere g\u00f6t\u00fcrelim.Ben yukar\u0131da , Button de\u011fi\u015fkenine t\u0131klayaca\u011f\u0131m\u0131 bildi\u011fim i\u00e7in sender de\u011fi\u015fkenini Button tipine &#8220;Unboxing&#8221; i\u015flemi yapt\u0131m.Peki bu durumda textbox tikla metodunu tetiklemi\u015f olsayd\u0131 ne olurdu?sender isimli object de\u011fi\u015fkene,textbox t\u0131kland\u0131\u011f\u0131ndan dolay\u0131 TextBox tipi g\u00f6nderilecekti.Ancak biz sender de\u011fi\u015fkenini Button tipine &#8220;Unboxing&#8221; etmi\u015f bulunuyoruz.Bu durumda program batlayacakt\u0131r&#8230;<br \/>\nBu durumu kontrol edebiliriz.sender de\u011fi\u015fkenine gelen tipin(TextBox,Button vs..) ne oldu\u011funu kontrol ederiz.<\/p>\n<hr \/>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n private void tikla(object sender, EventArgs e)\r\n        {\r\n if (sender.GetType()==typeof(Button))\r\n            {\r\n                button1.Text = &quot;asd&quot;;\r\n            }\r\n            else if (sender.GetType()==typeof(TextBox))\r\n            {\r\n                textBox1.Text = &quot;asd&quot;;\r\n            }\r\n            else if (sender.GetType()==typeof(CheckBox))\r\n            {\r\n                checkBox1.Text = &quot;asd&quot;;\r\n            }\r\n        }\r\n<\/pre>\n<hr \/>\n<p>Yukar\u0131daki kodlarda sender de\u011fi\u015fkenine gelen tipi sorguluyoruz.typeof() metodu sayesinde hangi kontrol\u00fcn geldi\u011fini sorgulayabiliyoruz.Art\u0131k textboxa da t\u0131klansa checkboxa da t\u0131klansa istedi\u011fimiz i\u015flemleri tek metodda yapt\u0131rabiliyoruz.A\u015fa\u011f\u0131daki gibide kontrol edebiliriz.<\/p>\n<hr \/>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nif (sender is TextBox)\/\/sender de\u011fi\u015fkenine gelen tip TextBox mu?\r\n       {\r\n                MessageBox.Show(&quot;evet textbox&quot;);\r\n       }\r\n<\/pre>\n<hr \/>\n<p>Yukar\u0131daki gibi &#8220;is&#8221; operat\u00f6r\u00fcn\u00fc kullanarak sender de\u011fi\u015fkeninin tipini \u00f6\u011frenebildik.<br \/>\n<strong><em>NOT:is operat\u00f6r\u00fcn\u00fc object&#8217;in i\u00e7inde ki eleman asl\u0131nda bu mudur ? amac\u0131yla kullanamay\u0131z.<\/em><\/strong><br \/>\nSon olarak Control tipinden bahsedece\u011fim.Control tipi,Button,TextBox v.s gibi tiplerin t\u00fcredi\u011fi bir tiptir.Bundan dolay\u0131 t\u00fcm Control tipinden t\u00fcreyen nesnelerde ortak bir tak\u0131m \u00f6zellikler bulunur.Text,Name,BackColor v.s,Bunlar\u0131 sa\u011flayan Control t\u00fcr\u00fcd\u00fcr.<\/p>\n<p>Unutmamam\u0131z gereken bir nokta ise,Control tipinden bir nesne \u00fczerinde kendine has \u00f6zellikleri kullanamay\u0131z.\u00d6rne\u011fin,TextBox nesnesini kullan\u0131rsak e\u011fer,kendine has \u00f6zelli\u011fi olan(yani TextBox tipindeki) .TextAlign \u00f6zelli\u011fi,Control tipinde(yani Control tipinden TextBoxta) bulamay\u0131z.<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Bu yaz\u0131mda C#&#8217;ta birden fazla kontrol\u00fcn tek olaya nas\u0131l ba\u011fland\u0131\u011f\u0131n\u0131 g\u00f6rece\u011fiz.Farkl\u0131 kontrol tiplerini ayn\u0131 olaya ba\u011flayabiliriz.Bu durumda hangi kontrol\u00fcn olay\u0131n\u0131n tetiklendi\u011fini nas\u0131l bulaca\u011f\u0131m\u0131z\u0131 g\u00f6rece\u011fiz.<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[62],"class_list":["post-123","post","type-post","status-publish","format-standard","hentry","category-c-sharp-c","tag-event"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/123","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=123"}],"version-history":[{"count":1,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/123\/revisions"}],"predecessor-version":[{"id":10365,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/123\/revisions\/10365"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=123"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=123"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=123"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}