मेरे ऐप में 'ओपन फाइल' बटन है। OpenFileDialog लॉन्च करने से पहले, यह पूछता है कि क्या उपयोगकर्ता वर्तमान फ़ाइल को सहेजना चाहता है, और यदि वे करते हैं, तो यह एक SaveFileDialog लॉन्च करता है। इसके बाद यह ओपनफाइलडियलॉग लॉन्च करता है। सुंदर मानक सामान।"संवाद को उपयोगकर्ता द्वारा शुरू किया जाना चाहिए" अपवाद को रोकने का कोई तरीका?
मेरी समस्या यह है कि चांदी की रोशनी तब OpenFileDialog.ShowDialog() विधि को उपयोगकर्ता द्वारा शुरू की गई नहीं है, और मुझे सुरक्षा अपवाद मिलता है।
क्या इस अपवाद से बचने के लिए कोई ज्ञात उचित तरीका है? निश्चित रूप से यह एक सुंदर मानक परिदृश्य है?
ऐप एक ब्राउज़र के भीतर है।
किसी भी विचारों का स्वागत करते
संपादित करें:
क्षमा करें, वास्तविक कोड जारी करने के लिए अनुमति नहीं :(तर्क हालांकि बहुत सरल है: psuedocode में 'OpenFile "बटन प्रेस घटना की तरह एक विधि कुछ कहता है:
* पहले बचाने के लिए है कि क्या पूछ एक नया SL संदेश लॉन्च
* संदेश विंडो पर हां/नहीं क्लिक किया:। -अगर नहीं है, लोड करने के लिए जाओ -अगर हाँ, लॉन्च SaveFileDialog.Sho एक खुला फ़ाइल संवाद
संपादित 2 लॉन्च: wDialog(), लोड करने के लिए
* लोड जाना मिनी कार्यक्रम ... मुख्य पृष्ठ के लिए
एक्सएमएल सामग्री:
<Grid x:Name="LayoutRoot" Background="White">
<Button Content="Open" Click="Button_Click"/>
</Grid>
कोड:
using System.Windows;
using System.Windows.Controls;
namespace SilverlightApplication15
{
public partial class MainPage : UserControl
{
AskWindow aw = new AskWindow();
public MainPage()
{
InitializeComponent();
aw.Closed += new System.EventHandler(aw_Closed);
}
private void Button_Click(object sender, RoutedEventArgs e)
{
aw.Show();
}
private void aw_Closed(object sender, System.EventArgs e)
{
if (aw.DialogResult == true)
{
SaveFileDialog svd = new SaveFileDialog();
svd.ShowDialog();
}
OpenFileDialog ofd = new OpenFileDialog();
ofd.ShowDialog();//Causes security exception
}
}
public class AskWindow : ChildWindow
{
public AskWindow()
{
Button b = new System.Windows.Controls.Button();
b.Click += new System.Windows.RoutedEventHandler(b_Click);
b.Content = "Yes, save it";
this.Content = b;
}
private void b_Click(object sender, System.Windows.RoutedEventArgs e)
{
this.DialogResult = true;
}
}
}
क्या आप अपना कोड पोस्ट कर सकते हैं। – ChrisF
क्या आपने ShowDialog() जैसे ShowDialog (स्ट्रिंग प्रश्न) के लिए एक्सटेंशन विधि लिखने का प्रयास किया है जो पहले MsgBox दिखाएगा और फिर संभवतः मूल ShowDiaglog() को कॉल करेगा? – neurotix
@ यूरोटिक्स: मैंने इसे अभी दिया है; एक ही परिणाम मुझे डर है :( – user495625