none
C# Başka bir formdaki picturebox ı butonla yazdırmak RRS feed

  • Soru

  • 2 farklı formum var. Form1 den butona basınca form2 deki picturebox taki resimi yazdırmak istiyorum buunu nasıl yapıcam yardımcı olursanız teşekkür ederim

    6 Aralık 2019 Cuma 10:45

Tüm Yanıtlar

    • form2 de access modifier'i public olan bir yazdırma methodunuz var mı?
    • form1 içinde form2 instance'ı nerede deklare edilmiş, bir method içinde mi yoksa class içinde mi?

    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    6 Aralık 2019 Cuma 12:52
    Moderatör
  • Sağa sola bulaşmadan tek hamlede de yapılabilir gibi görünüyor.

    // açık olan formlar içinde dönelim
    foreach (Form form in Application.OpenForms.OfType<Form>().ToList())
    {
        if (form.Name == "Form2")
        {
            // Form2'nin içindeki controller içinde dönelim
            foreach (Control control in form.Controls)
            {
                if (control.Name == "pictureBox1")
                {
                    // pictureBox'ı ele alalım
                    var pictureBox = control as PictureBox;
    
                    // burada artık nasıl yazdırıyorsan senindir
                    PrintDocument printDocument = new PrintDocument();
                    printDocument.PrintPage += (object sen, PrintPageEventArgs pea) =>
                    {
                        Point location = new Point(100, 100);
                        pea.Graphics.DrawImage(pictureBox.Image, location);
                    };
    
                    printDocument.Print();
    
                    break;
                }
            }
        }
    }
    



    TR| Sorunuzun yanıtı bu ise "Yanıt Olarak Öner" olarak işaretleyin, eğer faydalı bir yorum ise "Oy Ver"erek forumun işleyişine katkıda bulunabilirsiniz. EN| If this is the answer to your problem, mark "Propose as Answer" and if it is helpful, you can contribute to the workig of the forum by "Voting".

    6 Aralık 2019 Cuma 15:17
  • Öncelikle yardımınız için teşekkür ederim.
    Paylaştığınız kodda Form2 yazılı olan kısmı, ben yazdırmak istediğim form olan Form7 diye değiştim.Fakat butona basınca hiçbir işlem yapmıyor.
    Form2 sayfasını yazdırıyor buna bir çözüm bulamadım.
    • Düzenleyen cengizhnx 6 Aralık 2019 Cuma 21:12
    6 Aralık 2019 Cuma 21:10
  • Öncelikle yardımınız için teşekkür ederim.
    Paylaştığınız kodda Form2 yazılı olan kısmı, ben yazdırmak istediğim form olan Form7 diye değiştim.Fakat butona basınca hiçbir işlem yapmıyor.
    Form2 sayfasını yazdırıyor buna bir çözüm bulamadım.
    Öncelik bu Form7'nin name içeriğini yazmak gerek + Form7 açık olmalı. Eğer doğru yamışsan break point koyup adım adım izleyebilirsin, nerede takılıyorsan ona göre çözüm üretebiliriz.

    TR| Sorunuzun yanıtı bu ise "Yanıt Olarak Öner" olarak işaretleyin, eğer faydalı bir yorum ise "Oy Ver"erek forumun işleyişine katkıda bulunabilirsiniz. EN| If this is the answer to your problem, mark "Propose as Answer" and if it is helpful, you can contribute to the workig of the forum by "Voting".

    7 Aralık 2019 Cumartesi 04:42
  • Dediğiniz gibi Form7 açık olunca yazdırıyor.Fakat bu hazırladığım program için uygunsuz. Muhtarlık uygulaması yapıyorum ve gerekli olan belgeleri (ikametgah, nüfus sureti gibi) yazdırmak istiyorum. Datagridview de kayıtlı kişi seçiliyken o kişiye ait bilgileri belgedeki seçili alanlara yollamak istiyorum.
    Link yollamaaya iznim olmadığı için :
    Eğer google da cetasoft - muhtar uygulaması olarak aratırsanız somut bir örnekle daha iyi anlamış olursunuz. 

    • Düzenleyen cengizhnx 8 Aralık 2019 Pazar 10:40
    8 Aralık 2019 Pazar 10:38
  • Dediğiniz gibi Form7 açık olunca yazdırıyor.Fakat bu hazırladığım program için uygunsuz. Muhtarlık uygulaması yapıyorum ve gerekli olan belgeleri (ikametgah, nüfus sureti gibi) yazdırmak istiyorum. Datagridview de kayıtlı kişi seçiliyken o kişiye ait bilgileri belgedeki seçili alanlara yollamak istiyorum.
    Link yollamaaya iznim olmadığı için :
    Eğer google da cetasoft - muhtar uygulaması olarak aratırsanız somut bir örnekle daha iyi anlamış olursunuz. 

    Hmm, şimdi elinde Form1 içinde Datagridview var ve seçili olan içeriğin bilgisini Form2'de alıp yazdırmak istiyorsun gibi geldi bana. Bu durumda Form1'de seçili içeriği Form2'ye parametre olarak geçip yazdırmak gerekli.

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
    
            // bir sütun oluşturdum
            dataGridView1.Columns.Add("testa_column", "testa column");
            // bir satır picturebox ekleyelim
            dataGridView1.Rows.Add(new PictureBox 
            {
                // resources içinden resim yükleyelim
                Image = new Bitmap(WFAApp1.Properties.Resources.visual_reverse_image_search_v2_intro_1_) 
            });
        }
    
        private void button1_Click(object sender, EventArgs e)
        {
            // seçilen satırdaki hücreyi alıp 
            var image = ((PictureBox)dataGridView1.SelectedCells[0].Value).Image;
            // yazdırma formunu gösterelim
            new Form2(image).Show();
        }
    }

    public partial class Form2 : Form
    {
        public Form2(Image image)
        {
            Image = image;
            InitializeComponent();
        }
    
        public Image Image { get; set; }
    
        private void Form2_Load(object sender, EventArgs e)
        {
            PrintDocument printDocument = new PrintDocument();
            printDocument.PrintPage += (object sen, PrintPageEventArgs pea) =>
            {
                Point location = new Point(100, 100);
                pea.Graphics.DrawImage(Image, location);
            };
    
            printDocument.Print();
        }
    }

    Bu örnekteki esas nokta seçilen hücrenin değerini diğer forma constructor'da göndermek. Sen alır id göderirsin sonra dbden çeker yazdırırsın vs sana kalmış ama mantık böyle olmalı.


    TR| Sorunuzun yanıtı bu ise "Yanıt Olarak Öner" olarak işaretleyin, eğer faydalı bir yorum ise "Oy Ver"erek forumun işleyişine katkıda bulunabilirsiniz. EN| If this is the answer to your problem, mark "Propose as Answer" and if it is helpful, you can contribute to the workig of the forum by "Voting".

    8 Aralık 2019 Pazar 17:28
  • Yinee çok teşekkür ederim. Kodunuz boş bir datagridview de yazdırıyor.
    Fakat içinde veri olan bir datagridview de aşağıdaki hatayı alıyorum.

    1)https://i.hizliresim.com/VQJdly.png
    2)https://i.hizliresim.com/4pJ4Lp.png

    Bir diğer sorum , pictureboxun üzerindeki labellere datagridview daki değerlieri nasıl aktarabilirim.
    https://i.hizliresim.com/Rg5MJZ.png

    8 Aralık 2019 Pazar 22:54
  • Yinee çok teşekkür ederim. Kodunuz boş bir datagridview de yazdırıyor.
    Fakat içinde veri olan bir datagridview de aşağıdaki hatayı alıyorum.

    1)https://i.hizliresim.com/VQJdly.png
    2)https://i.hizliresim.com/4pJ4Lp.png

    Bir diğer sorum , pictureboxun üzerindeki labellere datagridview daki değerlieri nasıl aktarabilirim.
    https://i.hizliresim.com/Rg5MJZ.png

    Görseldeki testa column boş görünüyor, önce if ile null check yapaılmalı ki null reference hatası alınmasın. Doğrusu WFA ile pek çalışmadığım için datagridvew kontrolüne pek aşinadeğilim, örnekleri tahmin üzerinden veriyorum. Buna göre ben seçili hücredeki resmi yazdırmak için yukarıdaki kod yazmıştım. Eğer ihtiyacın olan şey o satırdaki bilgilerse SelectedRows'dan yardım alabilirsin. Şuradaki örnekler anlamana yardımcı olabilir.

    TR| Sorunuzun yanıtı bu ise "Yanıt Olarak Öner" olarak işaretleyin, eğer faydalı bir yorum ise "Oy Ver"erek forumun işleyişine katkıda bulunabilirsiniz. EN| If this is the answer to your problem, mark "Propose as Answer" and if it is helpful, you can contribute to the workig of the forum by "Voting".

    9 Aralık 2019 Pazartesi 18:17