मैं एक त्रुटि हो रही है:SaveFileDialog त्रुटि दे रहा है "संवाद होना चाहिए उपयोगकर्ता द्वारा आरंभ"
Dialog must be user-initiated
जब मैं अपने Silverlight applicaiton से savefile संवाद खोलने में हूँ मैं नीचे दिए गए कोड का उपयोग कर रहा
मुख्य बटन क्लिक करें घटना:
private void btnSaveAttach_Click(object sender, RoutedEventArgs e)
{
if (EditableGV.SelectedItems.Count == 1)
{
PositionAttachment posAtt = new PositionAttachment();
posAtt = (PositionAttachment)EditableGV.SelectedItems[0];
SaveFile(posAtt.File, posAtt.FileName);
}
else
{
RadWindow.Alert("Please select a attachment from the existing attachments list.", null);
return;
}
}
private void SaveFile(byte[] fileByte, string fileName)
{
try
{
byte[] fileBytes = fileByte;//your bytes here
//Show the dialog
SaveFileDialog dialog2 = new SaveFileDialog();
saveDialog = dialog2.ShowDialog();//This line is giving the error
if (saveDialog == true)
{
//Get the file stream
dialog2.DefaultFileName = fileName;
string fileExt = fileName.Substring(fileName.LastIndexOf('.'), fileName.Length);
dialog2.DefaultExt = "All Files|*.*|" + fileExt + "|*." + fileExt + "";
using (Stream fs = (Stream)dialog2.OpenFile())
{
fs.Write(fileBytes, 0, fileBytes.Length);
fs.Close();
//File successfully saved
}
}
}
catch
{
MessageBox.Show("Error in downloading file");
}
}
XMAL कोड:
<StackPanel x:Name="Layout">
<StackPanel x:Name="Messagepanel" Margin="2" Visibility="Collapsed">
<TextBlock x:Name="txtMessage" Text="1" Height="35"></TextBlock>
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="4">
<sdk:Label Height="28" Content="Select File:" Name="lblSelectFile" Grid.Column="0" Grid.Row="0" Width="70" />
<TextBox Name="txtFileName" IsReadOnly="True" HorizontalAlignment="Left" VerticalAlignment="Center" Width="303" Grid.Column="1" Margin="12,1,0,0"></TextBox>
<Button Content="Browse" Name="btnBrows" Width="55" Height="22" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="16,1,0,0" Click="btnBrows_Click" Grid.Column="1" />
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="4">
<sdk:Label Height="28" Content="Description:" Name="lblFileDescription" Grid.Column="0" Grid.Row="1" Width="70" />
<TextBox Height="60" Name="txtComments" Grid.Column="1"
VerticalScrollBarVisibility="Auto" Width="301" Margin="13,0,85,2" Grid.Row="1" />
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="4">
<Button x:Name="OKButton" Content="Add" Click="OKButton_Click" Width="43" Margin="363,6,10,15" Grid.Row="2" Grid.Column="1" HorizontalAlignment="Left" />
<Button x:Name="CancelButton" Content="Cancel" Click="CancelButton_Click" Width="53" HorizontalAlignment="Right" Margin="0,6,200,15" Grid.Row="2" Grid.Column="1" />
</StackPanel>
<StackPanel Orientation="Vertical" Margin="4" Height="224">
<sdk:Label Content="Existing Attachment(s):" Height="20" Margin="15,7,324,10" Name="lblExistingAttachemnt" />
<telerikGrid:RadGridView x:FieldModifier="public"
x:Name="EditableGV"
AutoGenerateColumns="False"
ItemsSource="{Binding PositionAttachemntCollection, Mode=TwoWay}" Margin="0,0,0,7" Height="150">
<telerik:RadGridView.Columns>
<telerik:GridViewDataColumn DataMemberBinding="{Binding FileName,Mode=TwoWay}"></telerik:GridViewDataColumn>
<telerik:GridViewDataColumn DataMemberBinding="{Binding FileDescription,Mode=TwoWay}"></telerik:GridViewDataColumn>
<!--<telerik:GridViewColumn Header="" >
<telerik:GridViewColumn.CellTemplate>
<DataTemplate>
<telerik:RadButton Name="btnDownlaod" Content="Save" Click="HyperlinkButton_Click"></telerik:RadButton>
<<HyperlinkButton Click="HyperlinkButton_Click" Content="{Binding FileName,Mode=OneWay}" TargetName="_blank" NavigateUri="http://www.google.com" />
</DataTemplate>
</telerik:GridViewColumn.CellTemplate>
</telerik:GridViewColumn>-->
</telerik:RadGridView.Columns>
</telerikGrid:RadGridView>
<StackPanel Orientation="Horizontal" Margin="0">
<!--<Button Content="Save Attachment" Name="btnSaveAttach" Width="112" Margin="263,6,10,15" Click="btnSaveAttach_Click" />-->
<Button Content="Close" Name="btnClose" Width="75" Margin="3,6,10,15" Click="btnClose_Click" />
</StackPanel>
</StackPanel>
</StackPanel>
यह फ़ंक्शन एक बटन पर क्लिक बुला रहा है। मैं सोच रहा हूं कि मेरे पास एक ही पृष्ठ पर ओपनफिल्डियलॉग भी है लेकिन बिना किसी त्रुटि के संवाद सफलतापूर्वक खोल रहा है। क्यों सहेजने वाला संवाद एक त्रुटि उत्पन्न कर रहा है।
at System.Windows.Controls.SaveFileDialog.ShowDialogInternal(Window owner)
at System.Windows.Controls.SaveFileDialog.ShowDialog()
at IPVWorkbench.Views.AddPositionAttachments.btnSaveAttach_Click(Object sender, RoutedEventArgs e)
at System.Windows.Controls.Primitives.ButtonBase.OnClick()
at System.Windows.Controls.Button.OnClick()
at System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e)
at System.Windows.Controls.Control.OnMouseLeftButtonUp(Control ctrl, EventArgs e)
at MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, Int32 actualArgsTypeIndex, String eventName, UInt32 flags)
बटन क्लिक और इस कॉल के बीच कौन सा कोड बैठता है? उपयोगकर्ता कार्रवाई के बीच न्यूनतम समय होता है और जब संवाद प्रकट होना चाहिए। यदि आप उस समय से अधिक हो रहे हैं तो आपको यह त्रुटि मिल जाएगी। – ChrisF
मैं सिर्फ फाइल डेटा ला रहा हूं और इसे एक सार्वजनिक चर में संग्रहीत कर रहा हूं "fileByte" –
आप कहां से डेटा ला रहे हैं? क्या यह एक एसिंक्रोनस कॉल का उपयोग कर रहा है? – ChrisF