28 Kasım 2014 Cuma
8 Kasım 2014 Cumartesi
C# ta invoke metodu kullanımı ve farkları
Posted on
04:03
by
Unknown
with
2
comments
Örnek 1---->
======================================================================
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
void Button1Click(object sender, EventArgs e)
{
MessageBox.Show("Buton 1 Tetiklendi :D");
}
void Button2Click(object sender, EventArgs e)
{
// ----Önemli Olan Nokta----- Yani Buton1'in tetiklendiği yer!!
Button1Click(new object(),new EventArgs());
// ----Önemli Olan Nokta----- Yani Buton1'in tetiklendiği yer!!
}
}
======================================================================
Yukarıdaki örnekği incelediğimizde --Buton1-- Metodunu tetiliyor.Standart tetikleme yöntim hepimiz biliyoruz.Yalnız şöylebir nokta var, programda threading(yani kanallama) yöntimi kullandığınızda program normal olarak hata verecektir.Çünkü programa çalışma esnasında müdahale ediyorsunuz. Bunu çömek için iki yöntem var.
1.si Sınıfın(form-buton vs. hangi sınıfı kıllanıyorsanız ) Checkforillegalcrossthreadcalls=false; properties'ini false yapmak.Bu önerilmez.Neden diye sorarsanız sınıfa dışarıdan illegal bir müdahaleyi aktifleştirmiş olursunuz. 2.si ise Sınıfın Invoke() metodunu kullanırsınız. Bu güvenilir ve sağlam olanı.Aşağıdaki örneği inceleyin.
======================================================================
Örnek 2---->
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
void Button1Click(object sender, EventArgs e)
{
MessageBox.Show("Buton 1 Tetiklendi :D");
}
void Button2Click(object sender, EventArgs e)
{
// ----Önemli Olan Nokta----- Yani Buton1'in tetiklendiği yer!!
button1.Invoke(new EventHandler(Button1Click));
// ----Önemli Olan Nokta----- Yani Buton1'in tetiklendiği yer!!
}
}
Yukarıdaki örnekte direkt olarak metodu tetikledik.Yani herhangibir obje veyahut event args oluşrurmadık.Kendiniz event args veya obje oluşturmak istiyorsanız 3. örneği kullanın.
======================================================================
Örnek 3---->
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
void Button1Click(object sender, EventArgs e)
{
MessageBox.Show("Buton 1 Tetiklendi :D");
}
void Button2Click(object sender, EventArgs e)
{
object obj=new Button();//kendimiz bir obje oluşturuyoruz istersekte dolduruyoruz.
EventArgs f=new EventArgs();//kendimiz bir eventargs oluşturuyoruz
// ----Önemli Olan Nokta----- Yani Buton1'in tetiklendiği yer!!
button1.Invoke(new EventHandler(Button1Click),new object[]{obj, f});
// ----Önemli Olan Nokta----- Yani Buton1'in tetiklendiği yer!!
}
}
======================================================================
private void ReceiveMessages()
{
if (ConResponse[0] == '1')
this.Invoke(new UpdateLogCallback(this.UpdateLog), new object[] { "Connected Successfully!" });
}
private void UpdateLog(string strMessage)
{
txtLog.AppendText(strMessage + "\r\n");
}
Kolay gele :D
======================================================================
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
void Button1Click(object sender, EventArgs e)
{
MessageBox.Show("Buton 1 Tetiklendi :D");
}
void Button2Click(object sender, EventArgs e)
{
// ----Önemli Olan Nokta----- Yani Buton1'in tetiklendiği yer!!
Button1Click(new object(),new EventArgs());
// ----Önemli Olan Nokta----- Yani Buton1'in tetiklendiği yer!!
}
}
======================================================================
Yukarıdaki örnekği incelediğimizde --Buton1-- Metodunu tetiliyor.Standart tetikleme yöntim hepimiz biliyoruz.Yalnız şöylebir nokta var, programda threading(yani kanallama) yöntimi kullandığınızda program normal olarak hata verecektir.Çünkü programa çalışma esnasında müdahale ediyorsunuz. Bunu çömek için iki yöntem var.
1.si Sınıfın(form-buton vs. hangi sınıfı kıllanıyorsanız ) Checkforillegalcrossthreadcalls=false; properties'ini false yapmak.Bu önerilmez.Neden diye sorarsanız sınıfa dışarıdan illegal bir müdahaleyi aktifleştirmiş olursunuz. 2.si ise Sınıfın Invoke() metodunu kullanırsınız. Bu güvenilir ve sağlam olanı.Aşağıdaki örneği inceleyin.
======================================================================
Örnek 2---->
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
void Button1Click(object sender, EventArgs e)
{
MessageBox.Show("Buton 1 Tetiklendi :D");
}
void Button2Click(object sender, EventArgs e)
{
// ----Önemli Olan Nokta----- Yani Buton1'in tetiklendiği yer!!
button1.Invoke(new EventHandler(Button1Click));
// ----Önemli Olan Nokta----- Yani Buton1'in tetiklendiği yer!!
}
}
Yukarıdaki örnekte direkt olarak metodu tetikledik.Yani herhangibir obje veyahut event args oluşrurmadık.Kendiniz event args veya obje oluşturmak istiyorsanız 3. örneği kullanın.
======================================================================
Örnek 3---->
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
void Button1Click(object sender, EventArgs e)
{
MessageBox.Show("Buton 1 Tetiklendi :D");
}
void Button2Click(object sender, EventArgs e)
{
object obj=new Button();//kendimiz bir obje oluşturuyoruz istersekte dolduruyoruz.
EventArgs f=new EventArgs();//kendimiz bir eventargs oluşturuyoruz
// ----Önemli Olan Nokta----- Yani Buton1'in tetiklendiği yer!!
button1.Invoke(new EventHandler(Button1Click),new object[]{obj, f});
// ----Önemli Olan Nokta----- Yani Buton1'in tetiklendiği yer!!
}
}
======================================================================
illaki butonu veya sınıfın delegelerini kullanmak gibi bi zorunluluğunuz yok aşağıya bir örnek daha vereyim buda bi client serve uygulamasının bir kısmı.
private void ReceiveMessages()
{
if (ConResponse[0] == '1')
this.Invoke(new UpdateLogCallback(this.UpdateLog), new object[] { "Connected Successfully!" });
}
private void UpdateLog(string strMessage)
{
txtLog.AppendText(strMessage + "\r\n");
}
Kolay gele :D
24 Mayıs 2014 Cumartesi
C sharp AppSetting yazma ve okuma
Posted on
12:25
by
Unknown
with
No comments
Windows app projelerinize Appsetting dosyalarını yazma ve okuma metodları.
Alıntı:MSDN Kütüphane
sadece öğrenmek amaçlıdır.ticari amaç için kullanılamaz.
using System;
using System.Configuration; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { HepsiniOkuSettings(); OkuSetting("Setting1"); OkuSetting("NotValid"); AddUpdateAppSettings("YeniAyar", "Nis 7, 2014"); AddUpdateAppSettings("YeniAyar1", "Ocak 8, 2014"); HepsiniOkuSettings(); } static void HepsiniOkuSettings() { try { var appSettings = ConfigurationManager.AppSettings; if (appSettings.Count == 0) { Console.WriteLine("AppSettings is empty."); } else { foreach (var key in appSettings.AllKeys) { Console.WriteLine("Key: {0} Value: {1}", key, appSettings[key]); } } } catch (ConfigurationErrorsException) { Console.WriteLine("Hata AppSetting Dosyasına Yazdırılamadı"); } } static void OkuSetting(string key) { try { var appSettings = ConfigurationManager.AppSettings; string result = appSettings[key] ?? "Not Found"; Console.WriteLine(result); } catch (ConfigurationErrorsException) { Console.WriteLine("Hata AppSetting Dosyasına Yazdırılamadı"); } } static void EkleUpdateAppSettings(string key, string value) { try { var configFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); var settings = configFile.AppSettings.Settings; if (settings[key] == null) { settings.Add(key, value); } else { settings[key].Value = value; } configFile.Save(ConfigurationSaveMode.Modified); ConfigurationManager.RefreshSection(configFile.AppSettings.SectionInformation.Name); } catch (ConfigurationErrorsException) { Console.WriteLine("Hata AppSetting Dosyasına Yazdırılamadı"); } } } }Çıktısı:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" /> </startup> <appSettings> <add key="Setting1" value="May 5, 2014"/> <add key="Setting2" value="May 6, 2014"/> </appSettings> </configuration>
Alıntı:MSDN Kütüphane
sadece öğrenmek amaçlıdır.ticari amaç için kullanılamaz.
Stok Cari Windows App. Ver:003
Posted on
02:33
by
Unknown
with
No comments
Yenilikler:Koleksiyon sınıfları Datagrid componentine dinamik olarak ayarlandı. burada dikkat etmeniz gereken hem biçimsel olarak sınıf ayarlaması yapıldı.Hemde koleksiyon olarak ayarlandı,yani, Datagrid veritabanıyla ilişkilendirilmedi.<--- Dikkat etmeniz gereken ve olması gereken bu.
Xmldoc. xmlwriter vb. sınıflar yerine Xmlserializer sınıfı kullanıldı,yani serializasyon kullanıldı.
Link:Yandex
Xmldoc. xmlwriter vb. sınıflar yerine Xmlserializer sınıfı kullanıldı,yani serializasyon kullanıldı.
Link:Yandex
23 Mayıs 2014 Cuma
Csharp Koleksiyon sınıflarıyla xml okuma yazma
Posted on
01:00
by
Unknown
with
No comments
22 Mayıs 2014 Perşembe
Csharp'ta Eklentiler001
Posted on
09:56
by
Unknown
with
No comments
Windows form üzerine çeşitli komponentler dinamik olarak ekleniyor.
Codeproject.com dan indirp biraz türkçeleştirmeye çalıştım güzel bir uygulama çok işinize yarayabilir.
linkler aşağıdadır.
GDive .rar
G drive Klasör şeklinde
Codeproject.com dan indirp biraz türkçeleştirmeye çalıştım güzel bir uygulama çok işinize yarayabilir.
linkler aşağıdadır.
GDive .rar
G drive Klasör şeklinde
19 Mayıs 2014 Pazartesi
Stok Cari Uygulaması001 beta
Posted on
10:49
by
Unknown
with
No comments
Stok Cari uygulaması001 beta versiyonudur.kod içeriği geneli benim, fakat internetten alıntı kodlar var.
msdn vb.
İçindekiler:
Stok Kartları
Cari Kartları
Kalıtım
XML Veritabanı
Aşagıdaki linklerden indirebilirsiniz.
msdn vb.
İçindekiler:
Stok Kartları
Cari Kartları
Kalıtım
XML Veritabanı
Aşagıdaki linklerden indirebilirsiniz.
Kaydol:
Kayıtlar
(
Atom
)