Anasayfa / Yazılım / C# / PrintPreviewControl

PrintPreviewControl

Bu yazıda PrintPreviewControl kullanarak kendimize özel bir baskı önizleme formu tasarlayacağız. Bu uygulamaya geçmeden önce aşağıdaki yazıyı okuyunuz ve bu uygulamayı indirip üzerinden devam edelim.

http://www.ismailgursoy.com.tr/openfiledialog-kontrol/

Öncelikle projeme bir adet daha windows form ekliyorum. Bunu yapmak için Solution Explorer alanında projeme sağ tıklayıp add deyip buradan windows form diyorum. Adını ben değiştirmedim Form2 olarak bıraktım. Daha sonra Form2’ye toolbox’dan PrintPreviewControl nesnesini sürükleyip bırakıyorum. PrintPreviewControl aslında PrintPreviewDialog içinde baskı önizleme yaptığımız alanı gösteren bir dialog penceresidir aslında. PrintPreviewDialog bize hazır olarak özelliklerini sunarken, PrintPreviewControl sadece baskıya gidecek kısmın önizlemesini yapar. Şimdi bizim bu uygulamamızdaki amaçda zaten yalın bir halde olan bu kontrole istediğimiz özellikleri kazandırmak..

Uygulamaya devam etmeden önce bu kontrolün bazı özelliklerine değinmek istiyorum.

Zoom : Dökümanı ne kadar yakınlaştırıp uzaklaştırdığımızı belirtmek için kullandığımız bir özelliktir. Alacağı değer 0 ile 1 arasındadır. Yani 1 olduğunda %100, 0.5 olduğunda %50, 0.3 olduğunda %30 demektir. 1’den büyük değerlerde alabiliyor. Örneğin 3 yapıldığında %300 oluyor. 5 yapılırsa %500 oluyor.

Rows : Kaç satır olduğunu gösterir. Yani ekrana ilk anda kaç satırlık alanın baskı önizlemesi geleceğini gösterir.

Columns : Kaç sütun olduğunu gösterir. Yani ekrana ilk anda kaç sütunluk alanın baskı önizlemesi geleceğini gösterir.

UseAntiAlias : Anti alias kullanımı için. Yazıların köşelerini piksel piksel değilde daha yumuşak şekilde gösteriyor.

StartPage : Baskı önizlemede ilk anda hangi sayfanın gösterileceğini belirlemek için kullanırız.

Document : PrintDocument nesnesi almak için kullanılıyor. Bunu belirtmemiz gerekiyor.

Belli başlı özellikleri bunlar.. Şimdi form2 üzerine yer alan PrintPreviewControl nesnemi siliyorum. Ve ToolBox üzerinden SplitContainer kontrolünü alıp formuma sürüklüyorum. Bu kontrolü eklediğimde solda Panel1 sağda Panel2 yazar. Yine ToolBox üzerinden sağdaki panel kısmına PrintPreviewControl nesnesini sürüklüyorum. Bu kontrolümün SplitPanel içinde Panel2 kısmını tamamen kaplamasını istiyorum bunun içinde PrintPreviewControl seçili iken properties alanında Dock özelliğinde orta kısmı yani Fill seçiyorum. Böylelikle kontrolüm Panel2 alanını tamamen kaplıyor. Modifier özelliğini de Internal seçiyorum, çünkü bu kontrole Form1 üzerinden ulaşmam gerekecek.

SplitContainer üzerindeki Panel1 alanında ise benim PrintPreviewControlüm için çeşitli özellikleri ayarlayabileceğim kontroller bulunacak. Buradan Zoom, antialis ayarlama, kaç satır, kaç sütun gibi çeşitli özellikleri yapmaya çalışacağım.

Şimdi formuma bir label ekliyorum. Bunun text özelliğini Satır yaptım.

Daha sonra bir adet NumericUpDown kontrolü ekledim. Bu kontrolün Value özelliğini 1 yapıyorum. Maximum özelliğini de 10 yaptım. Minimum özelliğini 1 yaptım. Bu kontrolümü satır listeleme için kullanacağım, minimum 1 maksimum 10 satır yani, başlangıç değeri de 1.

Daha sonra bir label daha ekliyorum. Text özelliğini sütun yapıyorum.

Sonra yine bir NumericUpDown daha ekliyorum. Bu kontrolüde sütunlar için kullanacağım. Value özelliğini 1 yapıyorum. Maksimum özelliği de 10 olsun. Minimum özelliği de 1 olsun.

Bir label daha ekliyorum, text özelliğini Zoom yapıyorum.

Sonra yine bir NumericUpDown kontrolü ekliyorum. Bunu zoom için kullanacağım. Bu da 25 değerinden başlasın, 25’er 25’er artsın ve maksimum da 500 olsun. Bunu yapmak için Value : 25, Minimum : 25, Maximum : 500 ve Increment özelliğini de 25 yapıyorum.

Daha sonra bir CheckBox yerleştiriyorum ve bunun Text özelliğini Anti Alias yapıyorum.

Daha sonra bir adet buton kontrolü ekliyorum, text özelliğini Yazdır yapıyorum.

Form2’nin son hali aşağıdaki gibi :

Daha önceki uygulama üzerinden devam ettiğim için şimdi aşağıdaki değişiklikleri yapıyorum.

Form1’e dönüyorum ve Dosya menüsünde Baskı Önizleme’ye çift tıklayıp bu evente giriyorum. Aşağıdaki gibi düzenliyorum.

 private void baskıÖnizlemeToolStripMenuItem_Click(object sender, EventArgs e)
        {
            
            //printPreviewDialog1.ShowDialog();
            Form2 baskiOnizle = new Form2();
            baskiOnizle.printPreviewControl1.Document = printDocument1;
            DialogResult baskiOnizleSonuc = baskiOnizle.ShowDialog();

            if (baskiOnizleSonuc == DialogResult.OK)
            {
                diziSayac = 0;
                printDocument1.Print();
            }
        }

Daha sonra Form2’ye dönüyorum ve burada Satırın altında yer alan ilk NumericUpDown kontrolüne çift tıklıyorum ve Changed eventinin oluşmasını sağlıyorum. Buraya aşağıdaki kodları ekliyorum :

 private void numericUpDown1_ValueChanged(object sender, EventArgs e)
        {
            printPreviewControl1.Rows = (int)numericUpDown1.Value;
        }

Daha sonra sütunlara bağlı olan NumericUpDown kontrolümün üzerinde çift tıklıyor ve buradaki Changed eventine aşağıdaki kodları ekliyorum :

 private void numericUpDown2_ValueChanged(object sender, EventArgs e)
        {
            printPreviewControl1.Columns = (int)numericUpDown2.Value;
        }

Daha sonra en altta yer alan NumericUpDown yani Zoom ayarı için kullanacağımız kontrol üzerinde çift tıklıyorum ve Changed eventinde aşağıdaki kodları yazıyoruz :

 private void numericUpDown3_ValueChanged(object sender, EventArgs e)
        {
            printPreviewControl1.Zoom = (double)numericUpDown3.Value / 100;
        }

Daha sonra CheckBox kontrolü üzerinde çift tıklıyorum ve Changed eventinde aşağıdaki kodları yazıyorum :

private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
            printPreviewControl1.UseAntiAlias = checkBox1.Checked;
        }

Daha sonra Form2 üzerinde yer alan buton kontrolümde yani yazdır butonumun özelliklerinden DialogResult özelliğini OK yapıyoruz.

Daha sonra uygulamamı çalıştırıyorum ve Dosya menüsünden Dosya Aç deyip bilgisayarımda bir TXT dosyası açıyorum. Sonra Dosya menüsünden Baskı Önizleme diyorum. Daha sonra uygulamam üzerinde satır, sütun ve zoom ayarlarını kendi oluşturduğum kontroller sayesinde görebiliyorum. Yazdır dediğimizde eğer bir printer yüklü ise yazdırma işlemi gerçekleştirilir, yüklü değilse varsayılan bir programı yazıcı olarak dosyayı kaydetmek üzere kullanabilir.

Aşağıdaki linkten uygulamayı indirebilirsiniz.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir