मैं उपयोगकर्ता द्वारा परिभाषित पथ के आधार पर प्रारंभिक निर्देशिका के साथ एक SaveFileDialog खोल रहा हूं। मैं यह सुनिश्चित करना चाहता हूं कि यह पथ इसे पास करने और संवाद खोलने से पहले मान्य है। अभी मुझे यह मिल गया है:

Microsoft.Win32.SaveFileDialog dialog = new Microsoft.Win32.SaveFileDialog();

if (!string.IsNullOrEmpty(initialDirectory) && Directory.Exists(initialDirectory))
{
    dialog.InitialDirectory = initialDirectory;
}

bool? result = dialog.ShowDialog();

हालांकि, ऐसा लगता है कि जब मैं ShowDialog को कॉल करता हूं तो \ फिसल रहा है और क्रैश हो रहा है। क्या ऐसे अन्य मूल्य हैं जो क्रैश का कारण बन सकते हैं? प्रारंभिक निर्देशिका संपत्ति को किन नियमों का पालन करने की आवश्यकता है?

3
RandomEngy 26 फरवरी 2011, 21:16
आप एक बग के आसपास काम करने की कोशिश क्यों कर रहे हैं? बग को ठीक करें।
 – 
Hans Passant
26 फरवरी 2011, 21:42
मैं यही करने की कोशिश कर रहा हूं... लेकिन पहले मुझे यह जानने की जरूरत है कि इसे SaveFileDialog पर भेजने से पहले उपयोगकर्ता इनपुट को कैसे सत्यापित किया जाए।
 – 
RandomEngy
26 फरवरी 2011, 21:47
SaveFileDialog पहले से ही यह आपके लिए करता है, इसे स्वयं करने का कोई मतलब नहीं है। फिर से, इनिशियलडायरेक्टरी प्रॉपर्टी को सेट करने से बचकर बग्स को न छिपाएं। अपवाद सहायक है, यह आपको बताता है कि कोड बोर्क है और आपके ध्यान की आवश्यकता है।
 – 
Hans Passant
26 फरवरी 2011, 22:17
2
अपवाद एक ArgumentException है: "मान अपेक्षित सीमा के भीतर नहीं आता है।"। यह सवाल इसी बारे में है। यह पता लगाना कि अपेक्षित "रेंज" क्या है। और यह बहुत स्पष्ट है कि यह स्वयं कोई सत्यापन नहीं कर रहा है, क्योंकि यह अभी-अभी उड़ा है। उपयोगकर्ता-इनपुट स्ट्रिंग लेना और SaveFileDialog में कुछ पास करना मेरा काम है जो इसे मुझ पर एक ArgumentException वापस नहीं फेंकता है। या आप मुझे यह बताने की कोशिश कर रहे हैं कि मुझे सिर्फ ArgumentException को पकड़ना चाहिए?
 – 
RandomEngy
26 फरवरी 2011, 22:40

1 उत्तर

सबसे बढ़िया उत्तर

इसे ठीक करने का त्वरित और आसान तरीका पूर्ण पथ प्राप्त करना होगा:

dialog.InitialDirectory = Path.GetFullPath(initialDirectory);

यह सापेक्ष पथों को उन निरपेक्ष पथों तक विस्तारित करेगा जिनकी SaveFileDialog अपेक्षा करता है। यह किसी भी चीज़ के बारे में विस्तार करेगा जो एक पूर्ण, जड़ पथ में पथ जैसा दिखता है। इसमें "/" जैसी चीजें शामिल हैं (वर्तमान फ़ोल्डर को जो भी ड्राइव पर सेट किया गया है उसकी जड़ में बदल जाता है) और "" (वर्तमान फ़ोल्डर में बदल जाता है)।

7
Mike Caron 27 फरवरी 2011, 01:51