18 Şubat 2023 Cumartesi
DragDrop ile Text ve Resim Yükleme Projesi
KOD İNDİR
PROJE KODLARI :
using DrDrpicApp1.Properties; using System; using System.Drawing; using System.Drawing.Imaging; using System.IO; using System.Text; using System.Windows.Forms; namespace DragDropUygula { public partial class Form1 : Form { public Form1() { InitializeComponent(); } #region GENEL DEĞİŞKENLER public string sDsy; // sürüklenen Dosya public string dsyAdi; // sadece Dsy Adi public string dsyUz; // // sadece Dsy uzantısı #endregion #region FORM OLAYLARI private void Form1_FormClosing(object sender, FormClosingEventArgs e) { Settings.Default.frmBoyu = this.Size; Settings.Default.frmYeri = this.Location; Settings.Default.ChkBox1 = checkBox1.Checked; Settings.Default.Save(); } private void Form1_Load(object sender, EventArgs e) { this.Size = Settings.Default.frmBoyu; this.Location = Settings.Default.frmYeri; if (checkBox1.Checked == Settings.Default.ChkBox1) { checkBox1.Checked= false; this.AllowDrop = true; } else { checkBox1.Checked = true; pictureBox1.AllowDrop = true; pictureBox2.AllowDrop = true; } } private void Form1_DragEnter(object sender, DragEventArgs e) { e.Effect = DragDropEffects.Copy; } private void Form1_DragDrop(object sender, DragEventArgs e) { //// Var anahtarı, değişken tanımı yaparken tür belirtmeksizin tanım yapmamızı sağlar var data = e.Data.GetData(DataFormats.FileDrop); if (data != null) { var filenames = data as string[]; if (filenames.Length > 0) //sürüklrnrn dsy birden fazlz mı?? lblYol.Text = filenames[0]; // sürüklenen (DragDrop edilen) dosya yolu sDsy = filenames[0]; System.IO.FileInfo ff = new System.IO.FileInfo(filenames[0]); string dsyAdi = ff.Name; // sadece dsyAdi.name string dsyUz = ff.Extension;// sadece uzantı { switch (ff.Extension.ToLower()) // uzantı > Anahtar sözcük // .ToUpper >büyük { case ".jpg": pictureBox1.Image = Image.FromFile(filenames[0]); break; case ".txt": //textBox1.Text = filenames[0]; textBox1.Text = null; BelgeyiOku(sDsy); break; case ".gif": pictureBox1.Image = Image.FromFile(filenames[0]); //ListBox2.Items.Add(eleman.Name); break; case ".png": pictureBox1.Image = Image.FromFile(filenames[0]); break; case ".bmp": pictureBox1.Image = Image.FromFile(filenames[0]); break; default: MessageBox.Show(sDsy + "\n" + "baba bana masal anlatma tamam mmı" + "\n" + " Sürüklenen KLASOR"); break; } } try { } catch (Exception exc) { MessageBox.Show(exc.Message, " Hata", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } #endregion #region CHECKBOX OLAYI private void checkBox1_CheckedChanged(object sender, EventArgs e) { if (checkBox1.Checked == false) { checkBox1.Text = "Forma Sürükleyin"; //checkBox1.CheckState.Equals(true); // Equals>eşittir ?? this.AllowDrop = true; pictureBox1.AllowDrop = false; pictureBox2.AllowDrop = false; } else { checkBox1.Text = "pictureBox1 'e Sürükleyin"; //checkBox1.CheckState.Equals(false); pictureBox1.AllowDrop = true; pictureBox2.AllowDrop = true; this.AllowDrop = false; } Settings.Default.ChkBox1 = checkBox1.Checked; Settings.Default.Save(); /* if (checkBox1.Checked == false) //if (checkBox1.Checked == false) // { // checkBox1.Text = "Forma Sürükle"; // } // else // { // checkBox1.Text = "pictureye Sürükle"; // } */ } #endregion #region PİCTUREBOX1 'E DRAGDROP İŞLEMLERİ private void pictureBox1_DragDrop(object sender, DragEventArgs e) { //// Var anahtarı, değişken tanımı yaparken tür belirtmeksizin tanım yapmamızı sağlar var data = e.Data.GetData(DataFormats.FileDrop); if (data != null) { var filenames = data as string[]; if (filenames.Length > 0) //sürüklrnrn dsy birden fazlz mı?? lblYol.Text = filenames[0]; // sürüklenen (DragDrop edilen) dosya yolu sDsy = filenames[0]; // eşitlendi System.IO.FileInfo ff = new System.IO.FileInfo(filenames[0]); string dsyAdi = ff.Name; // sadece dsyAdi.name string dsyUz = ff.Extension;// sadece uzantı { switch (ff.Extension.ToLower()) // uzantı > Anahtar sözcük // .ToUpper >büyük { case ".jpg": pictureBox1.Image = Image.FromFile(filenames[0]); break; case ".txt": //textBox1.Text = filenames[0]; textBox1.Text = null; BelgeyiOku(sDsy); break; case ".gif": pictureBox1.Image = Image.FromFile(filenames[0]); //ListBox2.Items.Add(eleman.Name); break; case ".png": pictureBox1.Image = Image.FromFile(filenames[0]); break; case ".bmp": pictureBox1.Image = Image.FromFile(filenames[0]); break; default: MessageBox.Show(sDsy + "\n" + "baba bana masal anlatma tamam mmı" + "\n" + " Sürüklenen KLASOR"); break; } } try { //ListBox1.SelectedIndex = 0; //lblCsayisi.Text = ListBox1.Items.Count.ToString(); //lblsDsySec.Text = ListBox1.Items[ListBox1.SelectedIndex].ToString(); // seçilen dsy yolu ve dsyadı } catch (Exception exc) { MessageBox.Show(exc.Message, " Hata", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } private void pictureBox1_DragEnter(object sender, DragEventArgs e) { e.Effect = DragDropEffects.Copy; } private void pictureBox1_MouseDown(object sender, MouseEventArgs e) { if (pictureBox1.Image != null) // Null Veya Boş ise { if (e.Button != MouseButtons.Left) checkBox1.CheckState = CheckState.Checked; pictureBox1.DoDragDrop(pictureBox1.Image, DragDropEffects.Copy); checkBox1.CheckState = CheckState.Unchecked; } return; // boş veya eşit değilse geri dön } private void pictureBox1_MouseUp(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) if (pictureBox1.Image != null) // picBox1 boş değilse sürüklemeyi başlat pictureBox1.DoDragDrop(pictureBox1.Image, DragDropEffects.Copy); else { MessageBox.Show("resim yok, Klasörden resim sürükleyin"); // picBox1 boş ise; uyar return; } } private void pictureBox2_DragDrop(object sender, DragEventArgs e) { pictureBox2.Image = (Bitmap)e.Data.GetData(DataFormats.Bitmap, true); } private void pictureBox2_DragEnter(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.Bitmap) && (e.AllowedEffect & DragDropEffects.Copy) != 0) e.Effect = DragDropEffects.Copy; else e.Effect = DragDropEffects.None; } private void pictureBox2_MouseMove(object sender, MouseEventArgs e) { //checkBox1.CheckState = CheckState.Unchecked; } #endregion #region TEXT BELGESİ OKUMA KODU private string BelgeyiOku(string sDsy) { StreamReader dosyaOku = new StreamReader(sDsy, Encoding.GetEncoding("windows-1254")); string yazi = dosyaOku.ReadLine(); while (yazi != null) { textBox1.Text += (yazi) + Environment.NewLine; yazi = dosyaOku.ReadLine(); } dosyaOku.Close(); return yazi; } #endregion #region OPENDİALOG ve SAVEDİALOG KODLARI private void btnDsyAc_Click(object sender, EventArgs e) { OpenFileDialog opDlg = new OpenFileDialog(); opDlg.Filter = "jpeg dosyası(*.jpg)|*.jpg|Bitmap(*.bmp)|*.bmp|Tüm dosyalar(*.*)| *.*"; opDlg.FilterIndex = 3; // tüm opDlg seçilir opDlg.RestoreDirectory = true; // True olarak setlediğimizde dialog bir önceki dosyanın seçildiği dizinden başlar opDlg.CheckFileExists = false; opDlg.Title = "Bir Dosya Seçiniz.."; //opDlg.ShowDialog(); if (DialogResult.OK == opDlg.ShowDialog()) { sDsy = opDlg.FileName; // Dsy Yolu //dsyAdi = opDlg.SafeFileName; // sadece dosya adı lblYol.Text = opDlg.FileName; //pictureBox1.Image = Image.FromFile(opDlg.FileName); System.IO.FileInfo ff = new System.IO.FileInfo(opDlg.FileName); string dsyAdi = ff.Name; // sadece dsyAdi.name string dsyUz = ff.Extension;// sadece uzantı { switch (ff.Extension.ToLower()) // uzantı > Anahtar sözcük // .ToUpper >büyük { case ".jpg": pictureBox1.Image = Image.FromFile(opDlg.FileName); break; case ".txt": //textBox1.Text = opDlg.FileName; textBox1.Text = null; BelgeyiOku(opDlg.FileName); break; case ".gif": pictureBox1.Image = Image.FromFile(opDlg.FileName); //ListBox2.Items.Add(eleman.Name); break; case ".png": pictureBox1.Image = Image.FromFile(opDlg.FileName); break; case ".bmp": pictureBox1.Image = Image.FromFile(opDlg.FileName); break; default: MessageBox.Show(sDsy + "\n" + "baba bana masal anlatma tamam mmı" + "\n" + " Sürüklenen KLASOR"); break; } } } } private void btnSakla_Click(object sender, EventArgs e) { SaveFileDialog sfd = new SaveFileDialog();//yeni bir kaydetme diyaloğu oluşturuyoruz. /* BİLGİ >Dosyanın ve Yolun Varlığını Kontrol Edin; Dosya adına dizinde var olmayan bir dosyanın adı yazıldığında kontrol dosyayı otomatik oluşturur. Eğer bunu kullanıcıdan gelecek yanıta göre yapmak istersek CreatePrompt özelliğini true olarak setlemek gerekecektir.Bu şekilde kullanıcıya dosyayı oluşturmak isteyip istemediğini soracaktır. */ sfd.OverwritePrompt = true; // İstemin Üzerine Yaz sfd.CreatePrompt = true; // onay iste ,Bilgi İstemi Oluştur sfd.Filter = "jpeg dosyası(*.jpg)|*.jpg|Bitmap dosyası(*.bmp)|*.bmp|Tüm dosyalar(*.*)| *.*"; //.bmp veya .jpg olarak kayıt imkanı sağlıyoruz. sfd.FilterIndex = 3; // dosya iletişim kutusunda seçili filtrenin dizinini temsil eder. sfd.InitialDirectory = sDsy; //System.Windows.Forms.Application.StartupPath; // UYGULAMA KLASÖRÜNÜ AÇAR //açılacak klasör seçilir sfd.FileName = dsyAdi; //kaydedilen resmimizin adını public belirlenen stringden alıyoruz sfd.Title = "Dosya Sakla"; //diyaloğumuzun başlığını belirliyoruz. DialogResult sonuc = sfd.ShowDialog(); if (sonuc == DialogResult.OK) { try { // FromFile yöntemi dosyayı kilitler dolayısıyla hata verir, Ancak hata yakalanıp Giderilecek pictureBox1.Image.Save(sfd.FileName); //HATA VERDİĞİNDE Try - catch (Exception) ile giderilir // veya üssteki satır iptal edilip (Hata Yakalama kullanmadan) direk alttaki kodla saklanabilir /* BİLGİ * https://www.web-development-kb-eu.site/tr/c%23/gdi-da-genel-bir-hata-olustu/940302485/ * resim kutusu dosyayı kullanıyor ve dosya değiştirmeyi engelliyor. * Bir Bitmap nesnesi veya bir Image nesnesi bir dosyadan oluşturulduğunda, * dosya nesnenin ömrü boyunca kilitli kalır. Sonuç olarak, bir resmi değiştiremez * ve onu kaynaklandığı dosyaya geri kaydedemezsiniz. */ /* Hata verebilen kısım // pictureBox1.Image = Image.FromFile(sfd.FileName); // Bitmap bm = new Bitmap(pictureBox1.Image); // bm.Save(@"New File Name", ImageFormat.Bmp); //lblYol.Text = sfd.FileName; */ } catch (Exception) { /* Buradaki kod Dosya kilitli olduğunda sorunu Çözümler //MessageBox.Show(exc.Message, " Hata", MessageBoxButtons.OK, MessageBoxIcon.Error); */ pictureBox1.Image = Image.FromFile(sfd.FileName); Bitmap bm = new Bitmap(pictureBox1.Image); bm.Save(@"New File Name", ImageFormat.Bmp); MessageBox.Show("Dosya kilitli Hatası Oluştu\n (BtMap Format) ile giderilip Saklandı"); } } } #endregion #region SİL BUTONU İŞLEMLERİ private void button1_Click(object sender, EventArgs e) { pictureBox1.Image= null; pictureBox2.Image= null; textBox1.Text = null; } #endregion } }
Hiç yorum yok:
Yorum Gönder
Sonraki Kayıt
Önceki Kayıt
Ana Sayfa
Kaydol:
Kayıt Yorumları (Atom)
Hiç yorum yok:
Yorum Gönder