1. Kapat butonunu pasifleştirmek

    private const int SC_CLOSE = 0xF060;
    private const int MF_GRAYED = 0x1;
    [DllImport("user32.dll")]
    private static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert);
    [DllImport("user32.dll")]
    private static extern int EnableMenuItem(IntPtr hMenu, int wIDEnableItem, int wEnable);
    private void Form1_Load(object sender, System.EventArgs e)
    {
    EnableMenuItem(GetSystemMenu(this.Handle, false), SC_CLOSE, MF_GRAYED);
    }

    Continue reading »
  2. Karakterlerin Program Üzerindeki Yer Bilgisi

    using System;
    using System.Windows.Forms;
    namespace ListBoxMouse1
    {
    public class MainForm : System.Windows.Forms.Form
    {
    private System.Windows.Forms.Label label1;
    private System.Windows.Forms.ListBox listBox1;
    public MainForm()
    {
    InitializeComponent();
    // now set this particular event handler to function ButtonDown()
    this.listBox1.MouseDown += new System.Windows.Forms.MouseEventHandler( this.ButtonDown );
    }
    // program entry point
    public static void Main(string[] args)
    {
    Application.Run(new MainForm());
    }
    #region Windows Forms Designer generated code
    private void InitializeComponent()
    {
    this.listBox1 = new System.Windows.Forms.ListBox();
    this.label1 = new System.Windows.Forms.Label();
    this.SuspendLayout();
    //
    // listBox1
    //
    this.listBox1.BackColor = System.Drawing.Color.FromArgb(((System.Byte)(255)), ((System.Byte)(224)), ((System.Byte)(192)));
    this.listBox1.ItemHeight = 16;
    this.listBox1.Location = new System.Drawing.Point(8, 16);
    this.listBox1.Name = "listBox1";
    this.listBox1.Size = new System.Drawing.Size(240, 196);
    this.listBox1.TabIndex = 0;
    //
    // label1
    //
    this.label1.BackColor = System.Drawing.Color.FromArgb(((System.Byte)(255)), ((System.Byte)(255)), ((System.Byte)(192)));
    this.label1.Location = new System.Drawing.Point(16, 224);
    this.label1.Name = "label1";
    this.label1.Size = new System.Drawing.Size(232, 112);
    this.label1.TabIndex = 1;
    this.label1.Text = "label1";
    //
    // MainForm
    //
    this.AutoScaleBaseSize = new System.Drawing.Size(6, 15);
    this.BackColor = System.Drawing.Color.FromArgb(((System.Byte)(192)), ((System.Byte)(192)), ((System.Byte)(0)));
    this.ClientSize = new System.Drawing.Size(320, 344);
    this.Controls.Add(this.label1);
    this.Controls.Add(this.listBox1);
    this.Name = "MainForm";
    this.Text = "MouseDown in a ListBox";
    this.Load += new System.EventHandler(this.MainFormLoad);
    this.ResumeLayout(false);
    }
    #endregion
    // respond to mouse events in the listBox
    private void ButtonDown(object sender, MouseEventArgs mea)
    {
    // the 0 based index of the row/item clicked
    int nDx = 0;
    if ( mea.Button == MouseButtons.Right )
    {
    label1.Text = "Right Button Clicked\n";
    }
    else if ( mea.Button == MouseButtons.Left )
    {
    label1.Text = "Left Button Clicked\n";
    }
    // calculate the index of the selected item or show error
    nDx = mea.Y / listBox1.ItemHeight;
    label1.Text = label1.Text +
    "Item height = " + listBox1.ItemHeight.ToString()+ "\n" +
    "X position = " + mea.X.ToString() + "\n" +
    "Y position = " + mea.Y.ToString() + "\n" +
    "Index = " + nDx.ToString();
    if ( listBox1.Items.Count <= nDx )
    {
    label1.Text = label1.Text + "\nRow clicked past items loaded";
    }
    else
    {
    label1.Text = label1.Text + "\nIndex = " + listBox1.Items[nDx];
    //highlight the selected row/item
    listBox1.SetSelected(nDx,true);
    }
    }
    // load the listBox with some names
    void MainFormLoad(object sender, System.EventArgs e)
    {
    listBox1.Items.Add("Helmut");
    listBox1.Items.Add("Helga");
    listBox1.Items.Add("Andreas");
    listBox1.Items.Add("Volger");
    listBox1.Items.Add("Kurt");
    listBox1.Items.Add("Erich");
    listBox1.Items.Add("Bjorn");
    listBox1.Items.Add("Lena");
    listBox1.Items.Add("Kristina");
    listBox1.Items.Add("Ulrike");
    listBox1.Items.Add("Heidrun");
    }
    }
    }

    Continue reading »
  3. Görev Yöneticisi

    using System;
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Data;
    using Microsoft.Win32;
    using System.IO;
    using System.Diagnostics;
    using System.Resources;
    namespace Process_Manager
    {
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    Process myProcess = new Process();
    //Declare process
    txtMachine.Text = System.Environment.MachineName.ToString();
    //set the machine name to textbox
    }
    private void FillList(string MachineName)
    {
    Process[] Prc;
    ListViewItem lvwP;
    Cursor.Current = Cursors.WaitCursor;
    //Set cusrsor as wait
    try
    {
    lvwProcesses.Items.Clear();
    Prc = Process.GetProcesses(MachineName.ToString());
    foreach (Process Prcs in Prc)
    {
    lvwP = lvwProcesses.Items.Add(Prcs.ProcessName.ToUpper());
    if (MachineName != System.Environment.MachineName)
    {
    lvwP.SubItems.Add("Unavailable...");
    lvwP.SubItems.Add("Unavailable...");
    lvwP.SubItems.Add(Prcs.Id.ToString());
    }
    else
    {
    lvwP.SubItems.Add(Prcs.MainWindowTitle);
    lvwP.SubItems.Add(Prcs.Responding.ToString());
    lvwP.SubItems.Add(Prcs.Id.ToString());
    }
    }
    }
    catch
    {
    lvwProcesses.Items.Add("Error enumerating items...");
    }
    Cursor.Current = Cursors.Default;
    }
    private void Form1_Load(object sender, EventArgs e)
    {
    FillList(txtMachine.Text);
    }
    private void cmdRefresh_Click(object sender, EventArgs e)
    {
    FillList(txtMachine.Text);
    }
    }
    }

    Continue reading »
  4. Geri Dönüşüm Kutusunu Boşaltma

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.Runtime.InteropServices;
    using System.IO;
    namespace RBinTest
    {
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    }
    private void Form1_Load(object sender, EventArgs e)
    {
    // İşlemi yapan kod bu kısımdır
    uint result = SHEmptyRecycleBin(IntPtr.Zero, null, 0);
    // Program açılışında geri dönüşüm kutusunu boşaltır
    }
    enum RecycleFlags : uint
    {
    SHERB_NOCONFIRMATION = 0x00000001,
    SHERB_NOPROGRESSUI = 0x00000001,
    SHERB_NOSOUND = 0x00000004
    }
    [DllImport("Shell32.dll", CharSet = CharSet.Unicode)]
    static extern uint SHEmptyRecycleBin(IntPtr hwnd, string pszRootPath,
    RecycleFlags dwFlags);
    }
    }

    Continue reading »
  5. Ekrana rastgele daireler çizmek

    /*
    * Created using SharpDevelop free C# IDE from
    * http://www.icsharpcode.net/opensource/sd/
    * User: vegaseat
    *
    * Draw a bunch of random circles or lines on a windows form
    * A very merry Windows Application
    */
    using System;
    using System.Drawing; // GDI+ stuff
    using System.Drawing.Imaging; // ImageFormat
    using System.Windows.Forms;
    namespace DrawLineCircle
    {
    // Summary description for Form1
    // a window with five buttons
    public class Form1 : System.Windows.Forms.Form
    {
    private System.Windows.Forms.Button btnLine;
    private System.Windows.Forms.Button btnCircle;
    private System.Windows.Forms.Button btnFill;
    private System.Windows.Forms.Button btnSave;
    private System.Windows.Forms.Button btnClear;
    private Bitmap DrawArea; // make a persistent drawing area
    // Required designer variable
    private System.ComponentModel.Container components = null;
    private Random rnd;
    private Pen myPen;
    public Form1()
    {
    InitializeComponent();
    rnd = new Random((int)DateTime.Now.Ticks); // seeded with ticks
    myPen = new Pen(Color.Red);
    }
    // Clean up any resources being used
    protected override void Dispose(bool disposing)
    {
    if (disposing)
    {
    if (components != null)
    {
    components.Dispose();
    }
    }
    base.Dispose(disposing);
    }
    #region Windows Form Designer generated code
    private void InitializeComponent()
    {
    this.btnCircle = new System.Windows.Forms.Button();
    this.btnSave = new System.Windows.Forms.Button();
    this.btnLine = new System.Windows.Forms.Button();
    this.btnFill = new System.Windows.Forms.Button();
    this.btnClear = new System.Windows.Forms.Button();
    this.SuspendLayout();
    //
    // btnCircle
    //
    this.btnCircle.Location = new System.Drawing.Point(136, 296);
    this.btnCircle.Name = "btnCircle";
    this.btnCircle.Size = new System.Drawing.Size(56, 20);
    this.btnCircle.TabIndex = 0;
    this.btnCircle.Text = "Circle";
    this.btnCircle.Click += new System.EventHandler(this.btnCircle_Click);
    //
    // btnSave
    //
    this.btnSave.Location = new System.Drawing.Point(328, 296);
    this.btnSave.Name = "btnSave";
    this.btnSave.Size = new System.Drawing.Size(48, 20);
    this.btnSave.TabIndex = 0;
    this.btnSave.Text = "Save";
    this.btnSave.Click += new System.EventHandler(this.btnSave_Click);
    //
    // btnLine
    //
    this.btnLine.Location = new System.Drawing.Point(264, 296);
    this.btnLine.Name = "btnLine";
    this.btnLine.Size = new System.Drawing.Size(54, 20);
    this.btnLine.TabIndex = 1;
    this.btnLine.Text = "Line";
    this.btnLine.Click += new System.EventHandler(this.btnLine_Click);
    //
    // btnFill
    //
    this.btnFill.Location = new System.Drawing.Point(200, 296);
    this.btnFill.Name = "btnFill";
    this.btnFill.Size = new System.Drawing.Size(56, 20);
    this.btnFill.TabIndex = 2;
    this.btnFill.Text = "FCircle";
    this.btnFill.Click += new System.EventHandler(this.btnFill_Click);
    //
    // btnClear
    //
    this.btnClear.Location = new System.Drawing.Point(8, 296);
    this.btnClear.Name = "btnClear";
    this.btnClear.Size = new System.Drawing.Size(56, 20);
    this.btnClear.TabIndex = 3;
    this.btnClear.Text = "Clear";
    this.btnClear.Click += new System.EventHandler(this.btnClear_Click);
    //
    // Form1
    //
    this.AutoScaleBaseSize = new System.Drawing.Size(6, 15);
    this.ClientSize = new System.Drawing.Size(380, 325);
    this.Controls.Add(this.btnClear);
    this.Controls.Add(this.btnFill);
    this.Controls.Add(this.btnSave);
    this.Controls.Add(this.btnLine);
    this.Controls.Add(this.btnCircle);
    this.Name = "Form1";
    this.Text = "Draw a few circles ...";
    this.Load += new System.EventHandler(this.Form1_Load);
    this.Closed += new System.EventHandler(this.Form1_Closed);
    this.Paint += new System.Windows.Forms.PaintEventHandler(this.Form1_Paint);
    this.ResumeLayout(false);
    }
    #endregion
    //
    // This is the main entry point for the application.
    //
    public static void Main()
    {
    Application.Run(new Form1());
    }
    // Line button click event
    private void btnLine_Click(object sender, System.EventArgs e)
    {
    Graphics xGraph;
    int k;
    xGraph = Graphics.FromImage(DrawArea);
    for(k = 1; k <>
    {
    myPen.Color = Color.FromArgb(
    (rnd.Next(0,255)),
    (rnd.Next(0,255)),
    (rnd.Next(0,255)));
    xGraph.DrawLine(
    myPen,
    (int) rnd.Next(0, this.Width),
    (int) rnd.Next(0, this.Height),
    (int) rnd.Next(0, this.Width),
    (int) rnd.Next(0, this.Height));
    }
    xGraph.Dispose();
    this.Invalidate();
    }
    // Circle button click event
    private void btnCircle_Click(object sender, System.EventArgs e)
    {
    Graphics xGraph;
    int k;
    int r; // radius of circle
    int x, y; // center coordinates of circle
    xGraph = Graphics.FromImage(DrawArea);
    for(k = 1; k <>
    {
    // radius for circle, max 1/2 the width of the form
    r = rnd.Next(0, (this.Width / 2));
    x = rnd.Next(0, this.Width);
    y = rnd.Next(0, this.Height);
    myPen.Color = Color.FromArgb(
    (rnd.Next(0,255)),
    (rnd.Next(0,255)),
    (rnd.Next(0,255)));
    // convert centerX, centerY, radius to bounding rectangle
    xGraph.DrawEllipse( myPen, x-r, y-r, r, r );
    }
    xGraph.Dispose();
    this.Invalidate();
    }
    // FCircle (solid circle) button click event
    private void btnFill_Click(object sender, System.EventArgs e)
    {
    Graphics xGraph;
    int k;
    int r; // radius of circle
    int x, y; // center coordinates of circle
    xGraph = Graphics.FromImage(DrawArea);
    // Create solid brush.
    SolidBrush Brush = new SolidBrush(Color.Red);
    for(k = 1; k <>
    {
    // radius for circle, max 1/2 the width of the form
    r = rnd.Next(0, (this.Width / 2));
    x = rnd.Next(0, this.Width);
    y = rnd.Next(0, this.Height);
    Brush.Color = Color.FromArgb(
    (rnd.Next(0,255)),
    (rnd.Next(0,255)),
    (rnd.Next(0,255)));
    // convert centerX, centerY, radius to bounding rectangle
    xGraph.FillEllipse( Brush, x-r, y-r, r, r );
    }
    xGraph.Dispose();
    this.Invalidate();
    }
    // form load event
    private void Form1_Load(object sender, System.EventArgs e)
    {
    DrawArea = new Bitmap(this.ClientRectangle.Width,
    this.ClientRectangle.Height,
    System.Drawing.Imaging.PixelFormat.Format24bppRgb);
    InitializeDrawArea();
    }
    private void InitializeDrawArea()
    {
    Graphics xGraph;
    xGraph = Graphics.FromImage(DrawArea);
    // clear the drawing area to background color
    xGraph.Clear(Color.LightYellow);
    }
    // free up resources on program exit
    private void Form1_Closed(object sender, System.EventArgs e)
    {
    DrawArea.Dispose();
    }
    // paint event
    private void Form1_Paint(object sender,
    System.Windows.Forms.PaintEventArgs e)
    {
    Graphics xGraph;
    xGraph = e.Graphics;
    xGraph.DrawImage(DrawArea,0,0,DrawArea.Width,DrawArea.Height);
    xGraph.Dispose();
    }
    // save drawing in bitmap DrawArea as a jpeg file
    private void btnSave_Click(object sender, System.EventArgs e)
    {
    ImageFormat format = ImageFormat.Jpeg;
    SaveFileDialog sfd = new SaveFileDialog();
    sfd.Filter = "JPEG Files(*.jpg)|*.jpg";
    if (sfd.ShowDialog() == DialogResult.OK)
    {
    // now save the image in the DrawArea
    DrawArea.Save( sfd.FileName, format );
    }
    }
    // clear the DrawArea
    private void btnClear_Click(object sender, System.EventArgs e)
    {
    Graphics xGraph;
    xGraph = Graphics.FromImage(DrawArea);
    // clear the drawing area to bg color
    xGraph.Clear(Color.LightYellow);
    // free up resource
    xGraph.Dispose();
    // update
    this.Invalidate();
    }
    }
    }

    Continue reading »
  6. Dizideki tekrarlanan elemanları silme

    // Fonksiyon Kodları
    public static Array DeleteDuplicates(Array arr)
    {
    // this procedure works only with vectors
    if (arr.Rank != 1 )
    throw new ArgumentException("Multiple-dimension arrays are not supported");
    // we use a hashtable to track duplicates
    // make the hash table large enough to avoid memory re-allocations
    Hashtable ht = new Hashtable(arr.Length * 2);
    // we will store unique elements in this ArrayList
    ArrayList elements = new ArrayList();
    foreach (object Value in arr)
    {
    if ( !ht.Contains(Value) )
    {
    // we've found a non duplicate
    elements.Add(Value);
    // remember it for later
    ht.Add(Value, null);
    }
    }
    // return an array of same type as the original array
    return elements.ToArray(arr.GetType().GetElementType());
    }
    // Örnek Kullanım:
    int[] numbers = new int[] {1, 3, 5, 2, 3, 1, 4};
    int[] result = (int[]) DropDuplicates(numbers);
    foreach (int num in result)
    Console.WriteLine(num);

    Continue reading »
  7. CD Sürücüsünü Açma / Kapatma

    using System;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.Runtime.InteropServices;
    namespace WindowsApplication1
    {
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    }
    private void button1_Click(object sender, EventArgs e)
    {
    int ret = mciSendString("CD Sürücüsünü Aç", null, 0, IntPtr.Zero);
    }
    private void button2_Click(object sender, EventArgs e)
    {
    int ret = mciSendString("CD Sürücüsünü Kapat", null, 0, IntPtr.Zero);
    }
    [DllImport("winmm.dll", EntryPoint = "mciSendStringA", CharSet = CharSet.Ansi)]
    protected static extern int mciSendString(string lpstrCommand,
    StringBuilder lpstrReturnString,
    int uReturnLength,
    IntPtr hwndCallback);
    }
    }

    Continue reading »
  8. C# projeleriniz için e-posta yollama sınıfı

    /// Örnek kullanım:
    EnhancedMailMessage msg = new EnhancedMailMessage();
    msg.From = "gonderen@site.com";
    msg.FromName = "Gönderen Adı";
    msg.To = "alici@site.com";
    msg.Subject = "Konu";
    msg.Body = "Mesaj";
    msg.SMTPServerName = "smtp.sunucu.com";
    msg.SMTPUserName = "kullanici";
    msg.SMTPUserPassword = "parola";
    msg.Send();
    /// Sınıf kodları:
    public class EnhancedMailMessage : MailMessage
    {
    private string fromName;
    private string smtpServerName;
    private string smtpUserName;
    private string smtpUserPassword;
    private int smtpServerPort;
    private bool smtpSSL;
    public EnhancedMailMessage()
    {
    fromName = string.Empty;
    smtpServerName = string.Empty;
    smtpUserName = string.Empty;
    smtpUserPassword = string.Empty;
    smtpServerPort = 25;
    smtpSSL = false;
    }
    ///
    /// The display name that will appear
    /// in the recipient mail client
    ///
    public string FromName
    {
    set
    {
    fromName = value;
    }
    get
    {
    return fromName;
    }
    }
    ///
    /// SMTP server (name or IP address)
    ///
    public string SMTPServerName
    {
    set
    {
    smtpServerName = value;
    }
    get
    {
    return smtpServerName;
    }
    }
    ///
    /// Username needed for a SMTP server
    /// that requires authentication
    ///
    public string SMTPUserName
    {
    set
    {
    smtpUserName = value;
    }
    get
    {
    return smtpUserName;
    }
    }
    ///
    /// Password needed for a SMTP server
    /// that requires authentication
    ///
    public string SMTPUserPassword
    {
    set
    {
    smtpUserPassword = value;
    }
    get
    {
    return smtpUserPassword;
    }
    }
    ///
    /// SMTP server port (default 25)
    ///
    public int SMTPServerPort
    {
    set
    {
    smtpServerPort = value;
    }
    get
    {
    return smtpServerPort;
    }
    }
    ///
    /// If SMTP server requires SSL
    ///
    public bool SMTPSSL
    {
    set
    {
    smtpSSL = value;
    }
    get
    {
    return smtpSSL;
    }
    }
    public void Send()
    {
    if (smtpServerName.Length == 0)
    {
    throw new Exception("SMTP Server not specified");
    }
    if (fromName.Length > 0)
    {
    this.Headers.Add("From",
    string.Format("{0} <{1}>",
    FromName, From));
    }
    // set SMTP server name
    this.Fields["http://schemas.microsoft.com/" +
    "cdo/configuration/smtpserver"] = smtpServerName;
    // set SMTP server port
    this.Fields["http://schemas.microsoft.com/cdo" +
    "/configuration/smtpserverport"] = smtpServerPort;
    this.Fields["http://schemas.microsoft.com/" +
    "cdo/configuration/sendusing"] = 2;
    if (smtpUserName.Length >0 && smtpUserPassword.Length > 0)
    {
    this.Fields["http://schemas.microsoft.com/" +
    "cdo/configuration/smtpauthenticate"] = 1;
    // set SMTP username
    this.Fields["http://schemas.microsoft.com" +
    "/cdo/configuration/sendusername"] = smtpUserName;
    // set SMTP user password
    this.Fields["http://schemas.microsoft.com/" +
    "cdo/configuration/sendpassword"] = smtpUserPassword;
    }
    // ssl if needed
    if (smtpSSL)
    {
    this.Fields.Add("http://schemas.microsoft" +
    ".com/cdo/configuration/smtpusessl", "true");
    }
    SmtpMail.SmtpServer = smtpServerName;
    SmtpMail.Send(this);
    }
    public static void QuickSend(
    string SMTPServerName,
    string ToEmail,
    string FromEmail,
    string Subject,
    string Body,
    MailFormat BodyFormat)
    {
    EnhancedMailMessage msg = new EnhancedMailMessage();
    msg.From = FromEmail;
    msg.To = ToEmail;
    msg.Subject = Subject;
    msg.Body = Body;
    msg.BodyFormat = BodyFormat;
    msg.SMTPServerName = SMTPServerName;
    msg.Send();
    }
    }

    Continue reading »
  9. C# ile E-Posta Yollama

    MailMessage msg = new MailMessage();
    msg.To = "kime@site.com"; // Kime
    msg.From = "kimden@site.com; // Kimden
    msg.Subject = "E-Posta Konusu"; // Konu
    msg.Body = "E-Posta Metni"; // Mesja
    msg.IsBodyHtml = false; // HTML formatı (true / false)
    SmtpClient smtp = new SmtpClient();
    smtp.Host = "mail.site.com"; // SMTP adresi
    smtp.Send(msg);

    Continue reading »
  10. C# da methotlar

    Bilgisayar programlarının en büyük avantajı, kullanıcının işini kolaylaştırmalarıdır. Her bilgisayar programı bunu değişik metotlar kullanarak sağlar.

    C# içerisinde küçük bir program birkaç sınıftan ve bu sınıflar ise değişik metotlardan oluşmaktadır. Dolayısı ile metotlar sınıf içerisinde değişik işler yaptırmak için kullandığımız küçük kod parçacıklarıdır.

    Herhangi bir metot tanımı yaparken ilk olarak, erişim belirleyen bir anahtar kelime, sonra metodun geri çevireceği değer türü (metot bir değer geri çevirmeyecekse değer türü void olarak yazılır ve gövdesinde return deyimi kullanılmaz). Metot isminden hemen sonra açılan parantezler içerisinde metodun alacağı parametre türleri ve isimleri, en son olarak ise metodun gövdesinde bulunan kod. Metot gövdesinde yazdığımız kod yapmak istediğimiz işlemin algoritmasıdır.


    erişilebirliği değer_türü metod_ismi(metod parametreleri)

    {

    //metod gövdesi

    //icra edilmesi gereken kod buraya yazılır

    }



    Biz her yerden erişilebilen bir, iki tam sayının toplama işlemini gerçekleştiren ve aldığı sonucu bize geri tam sayı (integer) olarak çeviren bir metot yazmak isteseydik, bunu aşağıdaki gibi yapardık.

    public int topla( int x , int y )

    {

    return ( x + y );

    }



    Bu metodu kullanırken ise sadece ismini yazıp parametrelerini vermemiz yeterli olur. Bunu aşağıdaki kodda görebiliriz.


    int sonuc = topla( 10 , 15 );

    Continue reading »
  11. Her Yönüyle ilk C# Programımız

    C# dili ortaya çıkalı daha hiç birşey yapmayan varsa ya da birşeyler yapıp da ne yaptığından emin olmayan varsa işte bu yazı tam size göre. Bu yazımızda klasik Merhaba Dünya programımızı yazacağız.Ama programımızı yazarken her şeyi adım adım öğreneceğiz. Unutmayın amacımız burada Merhaba Dünya yazmak değil. :) O halde aşağıdaki programı iyice inceleyin önce, şöyle bir süzün programı yukarıdan aşağıya, fazla detaylara inmeden yazımızı okumaya devam edin;

    //dosya adı : Merhaba.cs

    using System;
    namespace MerhabaDunya
    {
    class Sınıf1
    {
    static void Main(string args[])
    {
    Console.WriteLine("Merhaba Dünya");
    }
    }
    }

    Yukarıdaki ilk programımızı incelediğinize göre açıklamalarımıza geçebiliriz. Eğer önceden C++ ve Java ile ilgilenmiş arkadaşlar varsa yukarıdaki kodlar tanıdık gelebilir. Nitekim, her ne kadar Microsoft firması ilk başlarda bunu kabul etmese de C# dili Java ve C++ dillerinin harmanlanmasından oluşmuş bir dildir. Bugün bunu kabul etmeyen yoktur sanırım.

    Yukarıdaki ilk programımızın kodunu ben Notepad ile yazdım. Ama kodu derleyip çalıştırmak için bir C# derleyicisine ihtiyacımız olacak. C# derleyicisi Visual Studio.NET ile kurulabileceği gibi www.microsoft.com web sitesinden .NET Framework yazılımını indirerek de kurulabilir. Eğer Visual Studio ortamında çalışıyorsanız yukarıdaki kodları Visual Studio .NET ' in sunduğu hazır proje şablonlarından rahatlıkla oluşturabilirsiniz. Visual Studio programını çalıştırdıktan sonra Project->New menüsünden dil olarak Visual C# ve proje şablonu olarak da "Console Application" seçerseniz, main işlevi içindeki kodlar dışındaki yapı otomatikmen oluşturulacaktır.Eğer .NET Framework yapısını kurduysanız Console Ekranından C# derleyicisini çalıştırmalısınız. Komut ekranını yazarak kaynak kodumuzu derleyebilirsiniz.

    Şimdi kodlarımızı inceleyelim. İlk satırdaki ifadesi System adlı bir isim alanının kullanılacağını belirtiyor.Peki nedir bu isim alanı(Namespace). İsimalanı kavramı son yıllarda program modüllerinin çok sayıda artmasından dolayı popüler hale gelmiştir. Kolay ve hızlı programlama yapmamızı sağlayan bir takım hazır kütüphaneler her ne kadar işimizi kolaylaştırsa da eğer isimalanları olmasaydı kullanacağımız her kütüphane bizim için işin içinden çıkılmaz bir hale gelebilirdi. Düşünün ki iki ayrı firma iki ayrı sınıf kütüphaneleri oluşturdu ve bu kütüphanelerin içinde aynı isimli birden çok sınıf yapısı var. Eğer biz programcı olarak iki firmanın da kütüphanesini kullanmak istiyorsak her ikisini aynı kod içinde kullanamayız. Çünkü aynı isimli sınıflar derleme aşamasında hata verecektir. Bu durumda yapılması gereken tek şey ya da en etkili yöntem isimalanlarını kullanmaktır. Yani bir sınıfa(class) ulaşabilmek için onun isim alanıyla çağırmak. İsim alanları hiyerarşik yapıda olabilir. Mesela System isim alanının altında başka bir isim alanı onun altında başkaları vs. İşte .NET isimalanı(namespace) hiyerarşisinin en tepesinde bulunan isim alanı System adlı isimalanıdır. En temel işlemlerimiz için bile bu isim alanını kullanmalıyız. Aksi halde programımız çalışmayacaktır. İsimalanlarını kullanmak için isimalanının başına using sözcüğü getirilir.

    Soru: System isim alanının içinde Data isimalanında bulunan bir cs adlı sınıfı kullanabilmek için kaynak kodumuza ne eklememiz gerekir.

    Cevap : Kaynak kodumuzun en başına aşağıdaki ifadeyi yazmamız gerekir.

    using System.Data;

    Bildiğiniz gibi C# dili %100 nesne tabanlı bir dildir. Yaptığımız herşey bir sınıf nesnesidir C# dilinde. Nesne olmayan hiçbirşey yoktur. C++ dilindeki main işlevini hatırlarsınız çoğunuz. Programımız c++ dilinde main işlevinden başlar ama main işlevi hiç bir zaman bir sınıf içinde olmamıştır.C# dilinde herşey sınıflarla temsil edildiği için main işlevi de bizim belirlediğimiz bir sınıfın işlevi olmak zorundadır. Yukarıdaki programımızda ifadesi ile programımızda bir sınıf nesnesi oluşturuyoruz. Sınıf1 sınıfının bir işlevi olan main'in elbette eskiden de olduğu gibi özel bir anlamı vardır. Biliyorsunuz ki derleyiciler programın nerden çalışacağını bilmek isterler, aksi halde derleme işleminden sonra "programınız için başlama noktası bulunamadı" hatası alırız. Bu yüzden main işlevi bizim için eskiden de olduğu gibi programımızın başlangıç noktasıdır. Yani biz programda yapmak istediklerimizi main işlevi içinde gerçekleştireceğiz. Sınıf tanımlamalarımızı ise istediğimiz noktada yapabiliriz. Daha öncede dediğimiz gibi isimalanları birçok sınıfın veya tek bir sınıfın oluşturduğu kümedir. Bizim ana programımız da bir sınıf olduğuna göre Class1 sınıfını istediğimiz isimli bir isimalanına sokabiliriz. Yukarıda yazarak isimalanını başlatıyoruz.

    Şimdi main işlevinin içine bakalım, System isimalanında bulunan Console sınıfının bir metodu olan WriteLine() ile ekrana bir string ifadesi yazdırıyoruz. Biz burda iki tırnak ifadesi içinde yazımızı belirtmemize rağmen fonksiyonun kullanmı bununla sınırlı değildir. C# dilindeki fonksiyon aşırı yükleme (function overloading)kullanılarak fonksiyonu birçok parametrik yapıda kullanabilmemiz sağlanmıştır. Fonksiyon aşırı yükleme konusuna bundan sonraki yazılarımızda değineceğimizi belirtelim. WriteLine() işlevinin adından da anlaşılacağı gibi ekrana basmak istediğimiz yazıdan sonra satır atlama işlemi yapar.Bunu test etmek için bir tane "Merhaba Dünya" da siz yazdırın. Göreceksiniz ki siz belirtmemenize rağmen alt alta iki tane "Merhaba Dünya" yazısı çıkacak.

    Eğer bu programı yazıp derlediyeseniz ne mutlu size ki C# dünyasına güzel bir adım attınız.
    Visual C# ile Windows Menüleri Hazırlama
    Merhaba, bu makalemizde, hemen hemen tüm Windows uygulamalarının temel yapı taşı olan Windows menülerinin nasıl hazırlandığını ve basit bir uygulamasını adım adım göreceğiz. Bildiğiniz gibi Windows menülerini şimdiye kadar Visual Basic ortamında çok basit bir şekilde yapmak mümkündü. Ama artık Visual C# ile menü hazırlamak hem daha kolay hem de daha eğlenceli. Bu makalede yapacağımız uygulamadaki amacımız, File ve Edit bölümünden oluşan Windows menüsünü tek bir Windows butonuyla aktif ya da pasif duruma getirmek.
    Şimdi uygulamamızın ilk adımı olan yeni proje oluşturma sayfasını açalım.
    File->New -> Project menüsünü kullanarak aşağıdaki gibi yeni bir proje oluşturalım.
    Proje tipi olarak Visual C# Project, template olarak da Windows Application seçtikten sonra projemize uygun isim verip OK butonuna tıklayalım.
    Projemizi oluşturduğumuzda Visual C# IDE 'sinin bizim için bir başlangıç formu oluşturduğunu görürüz. Bu form doğal olarak şu anda boştur. Toolbox menüsünü kullanarak Form üzerine istediğimiz kontrolleri sürükle bırak yöntemiyle yerleştirebiliriz. Ya da istediğimiz kontrolü çift tıklayarak da aynı işlevi gerçekleştirebiliriz. Eğer toolbox menüsünü göremiyorsanız ekranın sol alt küşesinde bulunan
    ToolBox ikonuna tıklayın. Şimdi formumuza basit bir MainMenu kontrolu ekleyelim. Yine ToolBox menüsünden aşağıdaki ikona şekline benzeyen kısma çift tıklayın. Eğer işlem başarılıysa formunuzun en üst kısmında edit edilmek üzere bir menü oluşacaktır.
    MainMenu üzerine fare ile gelerek istediğiniz menü elemanlarını ekleyin.Ben önce File elemanını sonra Edit elemanını ve Edit elemanının içinde de Copy ve Paste menü elemanlarını aşağıdaki gibi oluşturdum.
    Şimdi menü elemanlarımıza Properties penceresinden isim verelim. Aşağıda gördüğünüz pencereden form design penceresinden seçtiğiniz elemanla ilgili özelliklere ulaşabilirsiniz.Şimdi Edit menü elamanına tıklayarak Properties ekranındaki name özelliğine "menuEdit" yazalım. Burda menu elemanına verdiğimiz ismi daha sonra kod yazarken kullanacağımız için aklımızda kalacak bir isim vermemiz düzenli kod yazmak için önemli bir sebeptir. Menü elemanlarıyla işimiz bittiğine göre sıra menüyü kontrol edeceğimiz butonu yerleştirmeye geldi. ToolBox penceresinden "Buton" a çift tıklayarak forma bir buton yerleştirelim .Daha sonra butona tıklayıp Properties penceresinden buton ismi (Name) olarak "BizimButon " yazalım. BizimButon ' un text özelliğine ise "MENU PASİF ET" yazısını yazalım. Bu yazıyı yazmamızın sebebi ise şudur: Mene elemanları varsayılan olarak aktif durumdadırlar. Bu yüzden menüyü pasif hale getirmek için bu yazıyı seçtik.
    Evet,Form tasarım işlemi bitti. Şimdi sıra geldi BizimButon ile menüye aktif ve pasif durumları arasında geçiş yaptırmak. Tabi asıl işte şimdi başlıyor.
    Form üzerindeki butona çift tıklayarak kod yazma ekranına gelelim.
    Gördüğünüz gibi Visual C# bizim için bir takım kodlar oluşturdu. Biraz bu hazır kodları ana hatlarıyla inceleyelim.
    using System;
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Data;
    Yukarıdaki kodlarla programımızın kullanacağı bir takım sistemler derleyiciye bildiriliyor.
    public class Form1 : System.Windows.Forms.Form
    System.Windows.Froms.Form sınıfından yeni bir Form1(bizim form) sınıfı türetilerek bu form içindeki elemanlar tanımlanıyor.
    private System.Windows.Forms.MainMenu mainMenu1;
    private System.Windows.Forms.MenuItem menuFile;
    private System.Windows.Forms.MenuItem menuEdit;
    private System.Windows.Forms.MenuItem menuItem3;
    private System.Windows.Forms.MenuItem menuItem4;
    private System.Windows.Forms.Button BizimButon;
    private System.ComponentModel.Container components = null;
    private void InitializeComponent() işlevi ile Form1 sınıfı içindeki elemanlarla ilgili ilk işlemler yapılıyor. Elemanların form üzerindeki yeri ve elemanlara ait Properties penceresinden tanımladığımız bütün özellikleri bu işlev ile yerine getirilir.
    static void Main()
    {
    Application.Run(new Form1());
    }
    Uygulamamızın Form1 üzerinden gerçekleştirileceğini belirtir.
    İşte bu da bizim kodumuz :
    private void BizimButon_Click(object sender, System.EventArgs e)
    {
    if (menuEdit.Enabled)
    {
    menuEdit.Enabled=false;
    BizimButon.Text="MENU AKTIF ET";
    }
    else
    {
    menuEdit.Enabled=true;
    BizimButon.Text="MENU PASIF ET";
    }
    }
    Bu kodu yazabilmek için form design penceresinden BizimButon çift tıklayarak BizimButon_click() işlevinin içine geçelim. Yukarıdaki kodda eğer menuEdit aktifse pasif duruma getiriyoruz ve BizimButon 'a da "MENU AKTIF ET" yazıyoruz. Eğer menuEdit zaten pasifse Menuyu aktif hale getirip BizimButon yazısını da "MENU PASIF ET" yapıyoruz. Aşağıda her iki durum için programımızın çıktısı mevcuttur.
    C ve C++ bakış açısıyla C# dili
    Bildiğimiz gibi bilgisayarları programlamak için programlama dillerine ihtiyaç duyulur.Bu dillerden en popülerleri Basic,C,C++,Pascal,Java ve Assembler 'dır.Makina dili ise donanımı kontrol etmek için donanımı üreten firma tarafından tanımlanan komutlar kümesidir. Bazı programlama dilleri derleyicilere ihtiyaç duymasına karşın bazıları ise yorumlayıcılara ihtiyaç duyarlar, mesela bir c++ programını çalıştırabilmek için C++ derleyicisine ihtiyacımız varken, Perl ile yazılmış bir CGI scripti için komut yorumlayıcısına ihtiyacımız vardır. Derleyiciler programı çalıştırmadan önce kodları makina komutlarına çevirirler fakat yorumlayıcılar bir grup kodu satır satır ya da bloklar halinde yorumlayarak çalıştırırlar.

    Aslında derleyiciler de, komut yorumlayıcıları da birer bilgisayar programından başka birşey değildirler.Yani c ve c++ dilleri bir giriş bekleyen ve çıkış veren birer bilgisayar programları gibi düşünülebilir.Giriş olarak kaynak kodu veren bu programlar çıkış olarak ise makina kodu üretirler.

    C ve C++ dillerine kısa bir bakış:

    C dili en popüler yapısal programlama dilidir.C dili Dennis Ritchie tarafından, Martin Richards ve Ken Thompson tarafından geliştirilen BCBL ve B dillerinin temelleri üzerine kuruldu.

    C dili "The C Programming Language by Brian Kernighan and Dennis Ritchie" kitabıyla büyümüştür.C dili için, 1983 yılının büyük önemi vardır.Çünkü 1983 yılında ANSI standartlar komitesi C standartları için toplanmıştır.Bu standartlaşma süreci tam 6 yıl sürmüştür.Ve tabi ki şu anki standartların oluşumuna katkıda bulunan ANSI 99 standartları da diğer önemli bir gelişmedir.

    C programcılar tarafından herhangi bir tür program geliştirmek için yazılmış genel amaçlı bir dildir. C ile bir düşük seviyeli sistem için program yazabileceğimiz gibi, yüksek seviyeli bir GUI(Grafik Arabirimi) tasarlamamız da mümkündür.Ve elbette kendi kütüphanemizi de C ile oluşturabiliriz.C dilinin ortaya çıkmasından bunca yıl geçmesine rağmen popülaritesini hiçbir zaman kaybetmemiştir. Günümüz programcıları çeşitli amaçlar için programlarını geliştirirken C dili ile yazılmış kaynak kodlarını kullanırlar.

    Bjarne Stroustrup 1980 yıllında C++ dilini ortaya çıkarmıştır. C++ dili C temelli ve C nin bir üst kümesi olarak düşünülebilir. C++ en popüler nesne temelli programlama dilidir. C++ dilinin ilk ismi "C with Classes"(C ile sınıflar) idi. C++ dili C diline nazaran daha etkili ve güçlüdür.Ve en önemli özellği ise C 'den farklı olarak nesne temelli bir dildir.Şu anda C++ dili ANSI ve ISO kuruluşları tarafından standartlaştırılmıştır. Bu standartların son versiyonu 1997 yılında yayınlanmıştır.

    C# diline kısa bir bakış:

    C#, güçlü, modern, nesne tabanlı ve aynı zaman type-safe(tip-güvenli) bir programlama dilidir.Aynı zamanda C#, C++ dilinin güçlülüğünü ve Visual Basic' in ise kolaylığını sağlar.Büyük olasılıkla C# dilinin çıkması Java dilinin çıkmasından bu yana programcılık adına yapılan en büyük gelişmedir. C#, C++ 'ın gücünden , Visual Basic 'in kolaylığından ve Java 'nın da özelliklerinden faydalanarak tasarlanmış bir dildir. Fakat şunu da söylemeliyiz ki, Delphi ve C++ Builder 'daki bazı özellikler şimdi C# 'da var. Ama Delphi ya da C++ Builder hiçbir zaman Visual C++ ya da Visual Basic 'in popülaritesini yakalayamamıştır.

    C ve C++ programcıları için en büyük sorun, sanırım hızlı geliştirememedir. Çünkü C ve C++ programcıları çok alt seviye ile ilgilenirler.Üst seviyeye çıkmak istediklerinde ise zorlanırlar.Ama C# ile artık böyle bir dert kalmadı.Aynı ortamda ister alt seviyede isterseniz de yüksek seviyede program geliştirebilirsiniz.C# dili Microsoft tarafından geliştirilen .NET paltformunun en temel ve resmi dili olarak lanse edilmiştir.C# dili Turbo Pascal derleyicisini ve Delphi 'yi oluşturan takımın lideri olan Anders Heljsberg ve Microsoft'da Visual J++ takımında çalışan Scott Wiltamuth tarafından geliştirilmiştir.

    .NET framework'ünde bulunan CLR (Common Language Runtime), JVM (Java Virtual Machine)' ye, garbage collection, güvenilirlik ve JIT (Just in Time Compilation) bakımından çok benzer.

    CLR, .NET Framework yapısının servis sağlama ve çalışma zamanının kod organizasyonu yapan ortamıdır. CLR, ECMA standartlarını destekler.

    Kısacası C# kullanmak için CLR ve .NET Framework sınıf kütüphanesine ihtiyacmız vardır. Bu da demek oluyor ki C#, JAVA, VB ya da C++ değildir. C,C++ ve JAVA 'nın güzel özelliklerini barındıran yeni bir programlama dilidir. Sonuç olarak C# ile kod yazmak hem daha avantajlı hem daha kolay hem de etkileyicidir.

    Bir başka yazıda buluşmak ümidiyle ...
    C#'da İfadeler, Tipler ve Değişkenler
    Bu derste C# dilindeki ifadeler,tipler ve değişkenler anlatılacaktır.
    Dersimizin hedefleri :
    Değişken kavramının anlaşılması.
    C# dilinde bulunan basit tiplerin öğrenilmesi.
    C# dilindeki ifadelerin temel olarak anlaşılması.
    String veri tipinin öğrenilmesi.
    Değişkenleri en sabit şekilde verilerin depolandğı yerler olarak tanımlayabiliriz. Değişkenlerin içine verilerimizi koyabilirirz veya değişkenlerimizin içindeki verileri C# programındaki işlemlerimiz için kullanabilliriz. Değişkelerin tipini belirleyen faktör, onların içerdikleri verilerin çeşitleridir.
    C# dilinde kullanacağımız her değişkenin bir tipi olmak zorundadır ( Vbscript ve JavaScript gibi dillerde değişken tanımlarken onun tipini de ayrıca belirtmeye gerek yoktur.) Bir değişken üzerinde yapılan tüm işlemler de onun hangi tipte bir değişken olduğu göz önüne alınarak yapılır. Böylece programda bütünlük ve güvenlik korunmuş olur.
    Boolean ( doğru/yanlış ), ve üç sayısal veri tipi; integer( tamsayı ), floating point (ondalıklı sayı ) ve decimal( muhasebe ve finansal işlemler için) C# dilinin en basit veri tipleri olarak sayılabilir.
    Kod 1 : Boolean değerlerin görüntülenmesi : Boolean.cs using System;
    class Booleans
    {
    public static void Main()
    {
    bool content = true;
    bool noContent = false;
    Console.WriteLine("It is {0} that C# Station provides C# programming language content.", content);
    Console.WriteLine("The statement above is not {0}.", noContent);
    }
    }

    Yukarıdaki Kod 1’de de görüleceği gibi boolean değişkenler ya true(doğru) veya false(yanlış) değerlerini alabilirler. Programın çıktısı şöyle olacaktır.
    >It is True that C# Station provides C# programming language content.
    >The statement above is not False.
    Aşağıdaki tablo tamsayı tiplerini, boyutlarını ve alabilecekleri değer aralıklarını göstermektedir. Type ( Tip ) Size (in bits)(boyut ) Range (aralık)
    sbyte 8 -128 to 127
    byte 87 0 to 255
    short 16 -32768 to 32767
    ushort 16 0 to 65535
    int 32 -2147483648 to 2147483647
    uint 32 0 to 4294967295
    long 64 -9223372036854775808 to 9223372036854775807
    ulong 64 0 to 18446744073709551615
    char 16 0 to 65535

    Tamsayı tipleri küsuratsız işlemler için çok elverişlidirler. Fakat char( karakter) tipi Unicode standartlarına uygun olarak bir karakteri temsil eder. Yukarıdaki tablodan da göreceğiniz gibi elimizde çok sayıda tamsayı tipimiz vardır. Bunlardan istedikleriminizi ihitiyaçlarımıza göre rahatça kullanabiliriz.
    Bir sonraki tablo ise ondalık (floating point ) ve decimal veri tiplerini,boyutlarını, hassasiyetlerini ve geçerli oldukları aralıkları listeler. Type ( Tip ) Size (in bits)(boyut ) Precision Range
    float 32 7 digits 1.5 x 10-45 to 3.4 x 1038
    Double 64 15-16 digits 5.0 x 10-324 to 1.7 x 10308
    Decimal 128 28-29 decimal places 1.0 x 10-28 to 7.9 x 1028

    Ondalıklı sayıları küsuratlı işlemlerde kullanmak iyi olur. Bunun yanında muhasebe ve finansal işlemler için decimal veri tipi daha uygun olacak şekilde tasarlanmıştır.
    Bilgisayar programları işlemleri yaparken ifadeleri kullanırlar ve sonuç ortaya çıkartırlar. Programlarda yer alan ifadeler değişkenler ve işleçlerden ( operatör) oluşurular. Bir sonraki tabloda işleçleri, işleçlerin işlem sıralarını ve işleme yönlerini görebilirsiniz. Category ( kategori) Operator(s) (işleç/işleçler) Associativity(işeme yönü)
    Primary (x) x.y f(x) a[x] x++ x-- new typeof sizeof checked unchecked left Unary + - ! ~ ++x --x (T)x left
    Multiplicative * / % left
    Additive + - left
    Shift << >> left
    Relational < > <= >= is left
    Equality == != right
    Logical AND & left
    Logical XOR ^ left
    Logical OR | left
    Conditional AND && left
    Conditional OR || left
    Conditional ?: right
    Assignment = *= /= %= += -= <<= >>= &= ^= |= right

    Sol işleme yönü demek işlemlerin soldan sağa doğru yapıldığıdır. Sağ işleme yönü demek işlemlerin sağdan sola doğru yapıldığıdır. Mesala atama işleçlerinin hepsinde önce sağ tarafın sonucu bulunur ve bu sonuç sol tarafa aktarılır.
    Kod 2 : Unary Operators: Unary.cs using System;
    class Unary
    {
    public static void Main()
    {
    int unary = 0;
    int preIncrement;
    int preDecrement;
    int postIncrement;
    int postDecrement;
    int positive;
    int negative;
    sbyte bitNot;
    bool logNot;
    preIncrement = ++unary;
    Console.WriteLine("Pre-Increment: {0}", preIncrement);
    preDecrement = --unary;
    Console.WriteLine("Pre-Decrement: {0}", preDecrement);
    postDecrement = unary--;
    Console.WriteLine("Post-Decrement: {0}", postDecrement);
    postIncrement = unary++;
    Console.WriteLine("Post-Increment: {0}", postIncrement);
    Console.WriteLine("Final Value of Unary: {0}", unary);
    positive = -postIncrement;
    Console.WriteLine("Positive: {0}", positive);
    negative = +postIncrement;
    Console.WriteLine("Negative: {0}", negative);
    logNot = false;
    logNot = !logNot;
    Console.WriteLine("Logical Not: {0}", logNot);
    }
    }

    İfadeler işlemler yapılırken arka-artırma ve arka-azaltma işleçleri önce değişkenin değerini döndürür sonra değişken üzerinde artırma veya azaltma işlemini yapar. Diğer taraftan, ön-artırma ve ön-azaltma işleçleri önce değişken üzerinde artırma veya azaltma işlemini yapar sonra değişkenin son halini döndürür.
    Kod 2‘de unary (tek) değişken önce sıfır olarak atanıyor. Ön-artırma (pre-increment) işleci uygulandığında, unary değişkenin değeri 1’e çıkıyor ve “preIncrement” değişkenine atanıyor. Hemen arkasında Ön-azaltma(pred-decrement) işleci sayesinde unary değişkenimiz tekrar sıfır değerini alıyor preDecrement değişkenine bu değer atanıyor.
    Arka-azaltma (post-decrement) işleci unary değişkenimize uygularsak bu değişkenimizin değeri değişiyor ama önce değişkenin ilk değeri postDecrement değişkenine atanıyor. Sonra ise arka-artırma (post-increment) işlecini uygularsak unary değişkenimizin değeri azalıyor fakat postIncrement değişkenin değeri unary değişkenimizin ilk değeri olarak kalıyor.
    Mantıksal değil işareti, doğru ifadeyi yanlış, yanlış ifadeyi ise doğru olarak değiştirir. Kod 2’inin çıktısı şöyle olacaktır :
    >Pre-Increment: 1
    >Pre-Decrement 0
    >Post-Decrement: 0
    >Post-Increment -1
    >Final Value of Unary: 0
    >Positive: 1
    >Negative: -1
    >Logical Not: True
    Kod 3. Binary Operators: Binary.csusing System;
    class Binary
    {
    public static void Main()
    {
    int x, y, result;
    float floatResult;
    x = 7; y = 5;
    result = x+y;
    Console.WriteLine("x+y: {0}", result);
    result = x-y;
    Console.WriteLine("x-y: {0}", result);
    result = x*y;
    Console.WriteLine("x*y: {0}", result);
    result = x/y;
    Console.WriteLine("x/y: {0}", result);
    floatResult = (float)x/(float)y;
    Console.WriteLine("x/y: {0}", floatResult);
    result = x%y;
    Console.WriteLine("x%y: {0}", result);
    result += x;
    Console.WriteLine("result+=x: {0}", result);
    }
    }

    Kod 3: te birçok aritmetik işlemler yapılıyor. Bu işlemlerin sonucunu da sizler tahmin edebilirsiniz...
    “floatResult” değişkenin tipi ondalıklı sayı tipi olduğu ve “x” ve “y” değişkenlerimiz tamsayı tiplerinde oldukları onları açık biçimde ondalıklı sayı tipine çevirdik ( explicitly cast ) ve bu şekilde işlem yaptık.
    Yukarıdaki kod parçasında bir de kalan (remainder % ) işlecinin kullanılışına dair örnek verdik. Bu işleç, iki sayının bölümününden kalan sayıyı sonuç olarak döndürür.
    Son olarak yazdığımız ifadede yeralan atama işleci de (+=) C/C++ ve C# programcılarının sıklıkla kullandıkları bir atama ve işlem yapma türüdür. Bu ifade aslında şu ifadenin kısa yoludur : “result = result + x”.
    Şimdiye kadar burada sıkça gördüğünüz diğer veri tipi ise string ( karakter dizisi veya karakter katarı)’dir. String veri tipi Unicode karakter tiplerinin bir listesini içerirler ve tek çift tırnak işaretleri arasında yazılırlar.

    Continue reading »
  12. Registry İşlemleri 1

    Merhaba arkadaşlar bu makalemizde Registry konusunu ele alıcaz. Windows'un tüm teknik bilgilerinin depolandığı yerin Registry olduğunu sanırım bilmeyeniz yoktur. Bu yüzden burdaki bilgiler önem arz etmektedir. Bazen burdaki bilgileri okuyup ona göre kod yazmanız, bazende sizin programınızın Registry'ye bilgi eklemesi gerekebilir. Şimdi bu durumları teker teker inceleyeceğiz. Aşağıdaki kodların çalışabilmesi için programınızın 'using' kısmına aşağıdaki kodu ekleyiniz.
    [C# Kodu]
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using Microsoft.Win32; // Bu satırı eklemeyi unutmayınız.

    Registry 'ye Veri Yazdırmak:

    Örnek olarak programınızın şifresini çok rahatlıkla Registry 'de saklıyabilirsiniz, veya programınız için gizli bir bilgiyi Registry 'de tutabilirsiniz. Bu işlemler için öncelikle Registry 'ye veri ekleme işlemini bilmeniz gerekmektedir.

    Bildiğiniz üzere Registry 'da 5 (Windows 2000 için) adet Ana Root vardır. Bunları "Start >> Run >> Regedit" yazıp görebilirsiniz.



    C# da hangi Root 'a ulaşıp veri eklemek veya yazmak isterseniz bunu

    [C# Kodu]
    Registry.CurrentUser;
    Registry.CurrentConfig;
    Registry.ClassesRoot;
    Registry.LocalMachine;
    Registry.Users;

    Ana Root 'lardan Herhangi Birine Veri Yazdırmak:

    Yukardaki 5 Ana Root 'dan istediğinize direk olarak veri ekliyebilirsiniz. Yazmanız gereken kod aşağıdadır.

    Registry.CurrentUser.SetValue();

    Bilirtilen Ana Root 'a herhangi bir beri eklemek için kullanılır.

    [C# Kodu]
    private void button1_Click(object sender, EventArgs e)
    {
    Registry.CurrentUser.SetValue("Kadir ACIKGOZ", 1985); // Current_User Ana Root' una veri ekleniyor.
    }

    Programi çalıştırıp butona tıklarsanız veriniz Registry 'e kayıt olucaktır. Sonucu görmek için "Start >> Run >> Regedit" yazın karşınıza gelen formdan HKEY_CURRENT_USER 'i seçin eklediğiniz veri gözükcektir.



    Eğer aynı değeri HKEY_USERS Ana Root 'una eklemek isteseydiniz o zaman kodunuzu aşağidaki gibi değiştirmeniz gerekmektedir.

    [C# Kodu]
    private void button1_Click(object sender, EventArgs e)
    {
    Registry.Users.SetValue("Kadir ACIKGOZ", 1985); // Users Ana Root' una veri ekleniyor.
    }


    Kadir AÇIKGÖZ
    www.kadiracikgoz.com
    kadir.acikgoz@kadiracikgoz.com

    Continue reading »
  13. C# Hesap Makinesi Kaynak Kodu

    4 Şubat 2010 Perşembe
    By Cheys
    c# hesap makinesi, c# hesap makinesi nasıl yapılır, c# hesap makinesi kaynak kodu, c# hesap makinesi yapımı videolu anlatım

    İndirmek İçin Tıklayın !
    Not: Dosya proje halindedir, *.exe uzantılı debuglar silinmiştir. Virüs barındırma olasılığı yoktur.

    *.zip şifresi: www.fazilyildiran.com
    Continue reading »
  14. C# ile Stok Takip Programı Yapmak #3 Kayıt Görüntüleme Videolu Anlatım

    Continue reading »
  15. C# ile Stok Takip Programı Yapmak #2 Kayıt Silme Videolu Anlatım

    Continue reading »
  16. C# ile Stok Takip Programı Yapmak #1 Kayıt Ekleme Videolu Anlatım

    3 Şubat 2010 Çarşamba
    By Cheys
    Continue reading »