2010-11-08 13 views
8

में सहेजें प्रकार के रूप में मेरे पास save.foo या .bar के साथ सहेजने के विकल्प के साथ एक SaveFileDialog है। सूची में पहला आइटम, और डिफ़ॉल्ट रूप से चयनित, .foo है। डिफ़ॉल्ट फ़ाइल नाम "शीर्षक रहित" है, और डिफ़ॉल्ट एक्सटेंशन ".foo" है। जब SaveFileDialog प्रकट होता है, तो यह फ़ाइल नाम टेक्स्टबॉक्स में "शीर्षक रहित" रखता है। मैं इसे "untitled.foo" में बदल सकता हूं लेकिन यह अभी भी मेरी समस्या के संबंध में व्यवहार को नहीं बदलता है:जब उपयोगकर्ता बदलता है तो फ़ाइल एक्सटेंशन बदलें SaveFileDialog

यदि उपयोगकर्ता .bar पर स्विच करता है, तो मैं फ़ाइल नाम को untitled.bar में कैसे बदल सकता हूं? केवल दो घटनाएं हैं, जिनमें से कोई भी मैं चाहता हूं, और ऐसा लगता है कि यह खुद को बदल नहीं रहा है।

+0

मैं एक ही समस्या हो रहा है, मैं आश्चर्य है कि अगर अपने, अपने नहीं विन XP में एक Win32 समस्या एक्सटेंशन को भी जोड़ना और मुझे नहीं पता कि उपयोगकर्ता ने कौन सा एक्सटेंशन चुना है। – shabby

+0

आप जिस जानकारी की आवश्यकता है उसे पुनर्प्राप्त करने के लिए आप SaveFileDialog.Filter या SaveFileDialog.FilterIndex का उपयोग कर सकते हैं। –

+0

यह सिर्फ मेरे लिए हुआ जो मुझे लगता है कि यह मुद्दा यहां है। आपके पास Windows 'फ़ोल्डर विकल्पों में चालू "ज्ञात फ़ाइल प्रकारों के लिए एक्सटेंशन छुपाएं" की संभावना है। चेक किए गए के साथ, यह SaveFileDialog में एक्सटेंशन प्रदर्शित नहीं करेगा, भले ही यह एक्सटेंशन के साथ सहेजेगा। क्या यह आपके साथ क्या हो रहा है? – BeemerGuy

उत्तर

5

एड,
के उदाहरण का सदस्य है, मैंने अभी परीक्षण किया है और यह ठीक काम करता है।
मैं ऐसा किया:

 SaveFileDialog sfd = new SaveFileDialog(); 

     sfd.FileName = "untitled"; 
     sfd.Filter = "Text (*.txt)|*.txt|Word Doc (*.doc)|*.doc"; 
     sfd.ShowDialog(); 

और यह स्वचालित रूप से फिल्टर मैं चुन पर निर्भर करता है नाम को बचाने का सुझाव दिया बदल जाता है।
मैंने .NET 2.0 ढांचे का उपयोग किया।
लेकिन मैं विंडोज 7 पर हूं, जो मुझे लगता है, क्योंकि आप सिस्टम के फाइल-सेव डायलॉग देखते हैं, और जिस तरह से इसे कार्यान्वित किया गया है, वह यहां मायने रखता है।

+0

हाँ, यह निश्चित रूप से ऐसा लगता है कि यह XP में काम नहीं कर रहा है। वास्तव में, मेरा प्रारंभिक मूल्यांकन गलत था; यह फ़ाइल एक्सटेंशन को बिल्कुल जोड़ नहीं रहा है। यह सिर्फ "शीर्षकहीन" के रूप में दिख रहा है –

0

जब आप वास्तव में फ़ाइल को सहेजने के लिए जाते हैं तो आप संवाद बॉक्स से फ़ाइल नाम प्राप्त कर सकते हैं, फिर वहां से आवश्यक स्ट्रिंग मैनिपुलेशन निष्पादित करें। फ़ाइल नाम SaveFileDialog

+0

यह यूआई चीज से अधिक है। मुझे पता है कि मैं फ़ाइल एक्सटेंशन जोड़ सकता हूं, लेकिन मैं चाहता हूं कि उपयोगकर्ता फ़ाइल एक्सटेंशन बदल रहा हो। –

+0

एड मार्टी के तर्क के अलावा, बहुत खराब कोड बंदर, यदि उपयोगकर्ता द्वारा चुने गए एक्सटेंशन के आधार पर फ़ाइल को अलग तरीके से सहेजना है तो क्या होगा? – shabby

1

डिफ़ॉल्ट एक्सटेंशन और AddExtension जोड़ना आपको वह व्यवहार देगा जो आप खोज रहे हैं। सवाल करने के लिए simialr/उत्तर यहाँ प्रदान की: https://stackoverflow.com/a/1213353/101971

 var saveFileDialog = new SaveFileDialog 
           { 
            Filter = "Foo (*.foo)|*.foo|Bar (*.bar)|*.bar", 
            DefaultExt = "foo", 
            AddExtension = true 
           }; 
0

आप ऐसा कर सकते हैं: savefiledialog1.AddExtension = सच

+0

यह मेरी विशेष समस्या का समाधान नहीं करता है, जो सहेजे गए बॉक्स में प्रदर्शित फ़ाइल नाम को बदलना था। –

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