C# Notepad yapımı (Özgün Konu)

Endarion

Katılımcı Üye
29 Ağu 2021
890
519
Righteous Side of Hell
Herkese selam, bugün basit bir şekilde notepad uygulaması kodlayacağız C#'ta. Zaten dile az buçuk hakim olsanız bile çok kolay şekilde yapabilirsiniz ancak yeni başlamış ve kendini geliştirmek isteyen arkadaşlar için yararlı olacağını düşünüyorum. Daha fazla gecikmeden anlatıma geçeyim;

Öncelikle Visual studio üzerinden bir winforms projesi oluşturuyoruz. .Net framework versiyonu farketmez. Ama ben 4.8 seçiyorum. Projemiz bu şekilde:


7qnpipq.png


Şimdi bir form tasarımı yapmamız gerekiyor. Forma:

1 RichTextBox, 1 ComboBox (tema için), 4 Adet Buton, 1 SaveFileDialog, 1 OpenFileDialog ve iki adette label ekliyorum ben. Son hali şu şekilde oldu:
dd011aq.png


RichTextBox'un rengi normalde böyle değil. Sadece siz görün diye bu şekilde yaptım. Siz istediğini renkleri kullanabilirsiniz.

Şimdi sıra en eğlenceli kısımda :D. Aşağıda size proje dosyalarını ve kodları içeren bir klasör bırakacağım zaten oradan kopyala yapıştır da yapabilirsiniz.
Anlamayacağınız bir yer olacağını sanmıyorum ancak ben gene de bazı kodları yanında açıkladım.

/*
Eğer Formun Border'ını None yaptıysanız 4 adet buton ekleyin. Biri çıkma biri küçültme butonu olacak. Diğerleri 2 adet ekleyebilir. Onlarda Dosya aç ve Kaydet olacak.
*/

Şimdi ufaktan kodlara geçiş yapalım:

Kapatma tuşuna:
Application.Exit();

Küçültme tuşuna:
this.WindowState = FormWindowState.Minimized;

Kapatma - Küçültmeyi hallettiğimize göre Dosya Açma ve Kaydetme işlemine geçebiliriz.

Dosya Aç Butonuna:

OpenFileDialog openFileDialog1 = new OpenFileDialog(); //Burada yeni bir OpenFileDialog öğesi oluşturup açılan dosyadaki yazıları richTextBox'a aktardık.
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
openFileDialog1.Title = "Open"; //Burası açılan pop-up'un yazısı.
richTextBox1.Text = File.ReadAllText(openFileDialog1.FileName);
}

----------------------------------------------------------------------------------

Kaydetme Butonuna:

SaveFileDialog saveFileDialog1 = new SaveFileDialog(); // Burada da saveFileDialog öğesi oluşturup StreamWriter ile RichTextBox'taki yazıları oluşan dosyanın üzerine yazdık.

saveFileDialog1.Filter = "Text Files (*.txt) | *.txt|All Files|*.*";
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{

saveFileDialog1.Title = "Text Files";

using (Stream s = File.Open(saveFileDialog1.FileName, FileMode.CreateNew))
using (StreamWriter sw = new StreamWriter(s))
{
sw.Write(richTextBox1.Text);
}

MessageBox.Show("Saved!");

}
----------------------------------------------------------------------------------

Bunları yaptığınızda dosya açabiliyor, kaydedebiliyor olmalısınız. Hata almıyorsanız devam edelim.

Eğer formu borderless yaptıysanız aşağıdaki kodları kodun herhangi bir yerine ekleyin. Sonunda forma basılı tutup sürüklediğinizde hareket ettirebiliyor olacaksınız.

----------------------------------------------------------------------------------
Point lastPoint;

private void Form1_MouseDown(object sender, MouseEventArgs e)
{
lastPoint = new Point(e.X, e.Y);
}

private void Form1_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
this.Left += e.X - lastPoint.X;
this.Top += e.Y - lastPoint.Y;
}
}
----------------------------------------------------------------------------------

Son olarak opsiyonel olan tema tasarımı kaldı. Onuda size bırakıyorum. Çözersiniz aşırı basit bir mantığı var. Bu konu bu kadardı. Daha ilk defa bu şekilde bir anlatım yaptığım için acemice olmuş olabilir. Kusuruma bakmayın :D.

Sonraki konularda görüşmek üzere..

Github:

Uygulamanın son hali aşağıda:
a4x4d53.png
 
Son düzenleme:

Kruvazör

Ar-Ge Ekibi Lideri
28 Mar 2020
1,761
2,616
Liman
Herkese selam, bugün basit bir şekilde notepad uygulaması kodlayacağız C#'ta. Zaten dile az buçuk hakim olsanız bile çok kolay şekilde yapabilirsiniz ancak yeni başlamış ve kendini geliştirmek isteyen arkadaşlar için yararlı olacağını düşünüyorum. Daha fazla gecikmeden anlatıma geçeyim;

Öncelikle Visual studio üzerinden bir winforms projesi oluşturuyoruz. .Net framework versiyonu farketmez. Ama ben 4.8 seçiyorum. Projemiz bu şekilde:


7qnpipq.png


Şimdi bir form tasarımı yapmamız gerekiyor. Forma:

1 RichTextBox, 1 ComboBox (tema için), 4 Adet Buton, 1 SaveFileDialog, 1 OpenFileDialog ve iki adette label ekliyorum ben. Son hali şu şekilde oldu:
dd011aq.png


RichTextBox'un rengi normalde böyle değil. Sadece siz görün diye bu şekilde yaptım. Siz istediğini renkleri kullanabilirsiniz.

Şimdi sıra en eğlenceli kısımda :D. Aşağıda size proje dosyalarını ve kodları içeren bir klasör bırakacağım zaten oradan kopyala yapıştır da yapabilirsiniz.
Anlamayacağınız bir yer olacağını sanmıyorum ancak ben gene de bazı kodları yanında açıkladım.

/*
Eğer Formun Border'ını None yaptıysanız 4 adet buton ekleyin. Biri çıkma biri küçültme butonu olacak. Diğerleri 2 adet ekleyebilir. Onlarda Dosya aç ve Kaydet olacak.
*/

Şimdi ufaktan kodlara geçiş yapalım:

Kapatma tuşuna:
Application.Exit();

Küçültme tuşuna:
this.WindowState = FormWindowState.Minimized;

Kapatma - Küçültmeyi hallettiğimize göre Dosya Açma ve Kaydetme işlemine geçebiliriz.

Dosya Aç Butonuna:

OpenFileDialog openFileDialog1 = new OpenFileDialog(); //Burada yeni bir OpenFileDialog öğesi oluşturup açılan dosyadaki yazıları richTextBox'a aktardık.
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
openFileDialog1.Title = "Open"; //Burası açılan pop-up'un yazısı.
richTextBox1.Text = File.ReadAllText(openFileDialog1.FileName);
}

----------------------------------------------------------------------------------

Kaydetme Butonuna:

SaveFileDialog saveFileDialog1 = new SaveFileDialog(); // Burada da saveFileDialog öğesi oluşturup StreamWriter ile RichTextBox'taki yazıları oluşan dosyanın üzerine yazdık.

saveFileDialog1.Filter = "Text Files (*.txt) | *.txt|All Files|*.*";
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{

saveFileDialog1.Title = "Text Files";

using (Stream s = File.Open(saveFileDialog1.FileName, FileMode.CreateNew))
using (StreamWriter sw = new StreamWriter(s))
{
sw.Write(richTextBox1.Text);
}

MessageBox.Show("Saved!");

}
----------------------------------------------------------------------------------

Bunları yaptığınızda dosya açabiliyor, kaydedebiliyor olmalısınız. Hata almıyorsanız devam edelim.

Eğer formu borderless yaptıysanız aşağıdaki kodları kodun herhangi bir yerine ekleyin. Sonunda forma basılı tutup sürüklediğinizde hareket ettirebiliyor olacaksınız.

----------------------------------------------------------------------------------
Point lastPoint;

private void Form1_MouseDown(object sender, MouseEventArgs e)
{
lastPoint = new Point(e.X, e.Y);
}

private void Form1_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
this.Left += e.X - lastPoint.X;
this.Top += e.Y - lastPoint.Y;
}
}
----------------------------------------------------------------------------------

Son olarak opsiyonel olan tema tasarımı kaldı. Onuda size bırakıyorum. Çözersiniz aşırı basit bir mantığı var. Bu konu bu kadardı. Daha ilk defa bu şekilde bir anlatım yaptığım için acemice olmuş olabilir. Kusuruma bakmayın :D.

Sonraki konularda görüşmek üzere..

Github:

Uygulamanın son hali aşağıda:
a4x4d53.png
Formun hareket etmesi konusunda bunifu kullanırsanız işiniz daha kolay olur :)

Ayrıca kodların daha rahat okunması için
C#:
Console.write("a");
Şeklinde düzenlerseniz çok güzel olur

Elinize sağlık :)
 

unknown1923

Katılımcı Üye
15 Şub 2021
339
57
Türkiye
Merhabalar eline ve emeğine sağlık. İstersen buna şifreleme sağ tık eklentileri ekleyerek daha kullanışlı yapabilirsin.İstersen sana kodlarını vere bilirim.
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.