2012-05-15 18 views
6

में फॉर्म फीड मैं प्रिंट फॉर्म करते समय एक फॉर्म फीड & छोड़ने की कोशिश कर रहा हूं, हालांकि कोड की निम्न पंक्तियों के साथ, मैं फॉर्म फीड बनाने में सक्षम नहीं हूं।सी # प्रिंटिंग

private void InserPageBreak(System.Drawing.Printing.PrintPageEventArgs e) 
{ 
     Font sFont = new Font("Arial", 10); 
     Brush sBrush = Brushes.White; 
     e.Graphics.DrawString("\f", sFont, sBrush, 0, 0); 
} 

मैं पृष्ठ सामग्री मुद्रित करने के लिए प्रिंटडिअलॉग का उपयोग करता हूं। मैं "\ f" सी # के फॉर्म फीड कैरेक्टर का उपयोग कर रहा हूं।

इस फ़ॉर्म को कार्यान्वित करने/बनाने के तरीके पर कोई विचार काम करने के लिए फ़ीड करता है?

पुनश्च: मैं भी करने की कोशिश की इस:

// ASCII कोड 12 - प्रिंटर के रूप फ़ीड नियंत्रण कोड।

string test = char.ConvertFromUtf32(12); 
e.Graphics.DrawString(test, sFont, sBrush, 0, 0); 

आंतरिक रूप से सी # धर्मान्तरित करने के लिए "\ च" है, लेकिन रूप फ़ीड नहीं किया, जो कोई लागू किया गया है "\ च", अपने विचार साझा करें।

+0

केवल जिज्ञासा से बाहर, क्या आपने ब्रश को ब्लैक में बदलने की कोशिश की है? –

+0

नहीं, मैंने ब्लैक के साथ भी कोशिश की, काम नहीं किया। – Sharpeye500

+0

[प्रिंट डॉक्यूमेंट.प्रिंटपेज इवेंट] देखें (http://msdn.microsoft.com/en-us/library/system.drawing.printing.printdocument.printpage%28v=vs.100%29.aspx) [फॉर्म फ़ीड से मिला उपयोग?] (http://bytes.com/topic/c-sharp/answers/274193-form-feed-usage)। –

उत्तर

5

.NET में, PrintPageEventArgs.HasMorePage गुण प्रिंटर को फ़ॉर्म फ़ीड भेजने के लिए उपयोग किया जाना चाहिए। E.Graphics.DrawString ("\ f", sFont, sbrush, 0, 0) को कॉल करके, आप मुद्रित होने के लिए दस्तावेज़ को टेक्स्ट प्रस्तुत कर रहे हैं, जिसे किसी प्रिंटर द्वारा फॉर्म फीड के रूप में कभी भी व्याख्या नहीं किया जाएगा।

चूंकि आप जानते हैं कि आप पृष्ठ को तोड़ना चाहते हैं, अपने InserPageBreak विधि को कॉल करने के बजाय, PrintPageEventArgs.HasMorePages = अपने प्रिंटपेज ईवेंट हैंडलर के भीतर सत्य सेट करें। वह प्रिंटर को एक फॉर्म फीड भेज देगा और जब तक आप HasMorePages = false सेट नहीं करते हैं तब तक आपके प्रिंटपेज ईवेंट को निकाल दिया जाएगा।

मुझे आशा है कि इस मदद करता है। यह देखने के लिए उपयोगी हो सकता है कि आपने अपने प्रिंटपेज ईवेंट हैंडलर को कैसे कार्यान्वित किया है।

उदाहरण:

BeginPrint हैंडलर मुद्रण

void _document_BeginPrint(object sender, PrintEventArgs e) 
    { 
     //generate some dummy strings to print 
     _pageData = new List<string>() 
       { 
        "Page 1 Data", 
        "Page 2 Data", 
        "Page 3 Data", 
       }; 

     // get enumerator for dummy strings 
     _pageEnumerator = _pageData.GetEnumerator(); 

     //position to first string to print (i.e. first page) 
     _pageEnumerator.MoveNext(); 
    } 

PrintPage हैंडलर में पहले डेटा प्रारंभ करने, का उपयोग एक समय में एक ही पृष्ठ मुद्रित, और इंगित करने के लिए किया जाए या नहीं वहाँ एक और है HasMorePages सेट प्रिंट करने के लिए पेज। इस उदाहरण में, तीन पृष्ठ मुद्रित होंगे, प्रत्येक पृष्ठ पर एक स्ट्रिंग। तीसरे पृष्ठ के बाद, _pageEnumerator.MoveNext() झूठी वापसी करेगा, प्रिंट नौकरी समाप्त कर देगा।

void _document_PrintPage(object sender, PrintPageEventArgs e) 
    { 
     Font sFont = new Font("Arial", 10); 
     Brush sBrush = Brushes.Black; 

     //print current page 
     e.Graphics.DrawString(_pageEnumerator.Current, sFont, sBrush, 10, 10); 

     // advance enumerator to determine if we have more pages. 
     e.HasMorePages = _pageEnumerator.MoveNext(); 
    } 
+0

+1 मुझे लगभग 30 सेकंड तक मारो। –

+0

धन्यवाद। मैंने PrintPageEventArgs.HasMorePages = true सेट करने का प्रयास किया; यह एक फॉर्म फ़ीड नहीं किया था। क्या आपको दिखाने के लिए कोई त्वरित नमूना/उदाहरण है? – Sharpeye500

+1

मैंने एक छोटा सा नमूना जोड़ा। मैंने पोस्ट करने से पहले इसका परीक्षण किया और यह 3 अलग-अलग पृष्ठों को प्रिंट करता है। – figabytes

संबंधित मुद्दे