2011-05-23 16 views
7
var dlg = new SaveFileDialog(); 
dlg.FileName = "graph"; 
dlg.DefaultExt = ".bmp"; 
dlg.Filter = "PNG|*.png|DOT|*.dot|Windows Bitmap Format|*.bmp|GIF|*.gif|JPEG|*.jpg|PDF|*.pdf|Scalable Vector Graphics|*.svg|Tag Image File Format|*.tiff"; 

एक्सटेंशन हमेशा .png पर डिफ़ॉल्ट हो जाता है। ऐसा लगता है कि को अनदेखा किया गया है यदि Filter है; तो यह सिर्फ सूची में पहले विकल्प के लिए डिफ़ॉल्ट है।WPF SaveFileDialog DefaultExt ने अनदेखा किया?

क्या वास्तव में डिफ़ॉल्ट एक्सटी का सम्मान करने के लिए इसे मजबूर करने का कोई तरीका है?

उत्तर

12

आपको DefaultExt के बजाय FilterIndex संपत्ति सेट करनी चाहिए। यदि आप अभी भी DefaultExt का उपयोग करना चाहते हैं, तो आप इसे मैन्युअल रूप से उचित फ़िल्टर इंडेक्स में परिवर्तित कर सकते हैं:

public static void UseDefaultExtAsFilterIndex(FileDialog dialog) 
{ 
    var ext = "*." + dialog.DefaultExt; 
    var filter = dialog.Filter; 
    var filters = filter.Split('|'); 
    for(int i = 1; i < filters.Length; i += 2) 
    { 
     if(filters[i] == ext) 
     { 
      dialog.FilterIndex = 1 + (i - 1)/2; 
      return; 
     } 
    } 
} 

var dlg = new SaveFileDialog(); 
dlg.FileName = "graph"; 
dlg.DefaultExt = ".bmp"; 
dlg.Filter = "PNG|*.png|DOT|*.dot|Windows Bitmap Format|*.bmp|GIF|*.gif|JPEG|*.jpg|PDF|*.pdf|Scalable Vector Graphics|*.svg|Tag Image File Format|*.tiff"; 
UseDefaultExtAsFilterIndex(dlg); 
dlg.ShowDialog(); 
4

DefaultExt वह एक्सटेंशन है जिसका उपयोग तब किया जाएगा जब उपयोगकर्ता बिना किसी एक्सटेंशन के फ़ाइल नाम का चयन करता है (कम से कम एमएसडीएन से विवरण पढ़ने से मेरी समझ है)।

आपके आवेदन के उपयोगकर्ता एक विस्तार के बिना एक फ़ाइल नाम निर्दिष्ट करता है, FileDialog फ़ाइल नाम के लिए एक विस्तार जोड़ देता है।

आपको फ़िल्टर सूची में पहली आइटम bmp बनाना पड़ सकता है।

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