Frage

Vor einiger Zeit schrieb ich eine Silverlight User Control mit einer CSV -Import-/Exportfunktion. Dies hat einwandfrei funktioniert, bis vor kurzem habe ich festgestellt, dass es sich in einem Szenario irrt. Dies kann darauf zurückzuführen sein, dass sie sich in Silverlight 3 bewegen.

Der Fehler:
Meldung: Unberechtigter Fehler in Silverlight 2 Application
Code: 4004
Kategorie: ManagedRuntimeError
Meldung: System.security.SecurityException: Dialoge müssen Benutzer initiiert werden.
at system.windows.controls.openFiledialog.showdialog ()
bei mycontrol.openimportFiledialog ()
bei ...

Der Code:

private void BrowseFileButton_Click(object sender, RoutedEventArgs e)
{
    if (string.IsNullOrEmpty(lblFileName.Text))
    {
        if (MessageBox.Show("Are you sure you want to change the Import file?", "Import", MessageBoxButton.OKCancel) == MessageBoxResult.Cancel)
        {
            return;
        }
    }
    EnableDisableImportButtons(false);
    var fileName = OpenImportFileDialog();
    lblFileName.Text = fileName ?? string.Empty;
    EnableDisableImportButtons(true);    
}

private string OpenImportFileDialog()
{
    var dlg = new OpenFileDialog { Filter = "CSV Files (*.csv)|*.csv" };
    if (dlg.ShowDialog() ?? false)
    {
        using (var reader = dlg.File.OpenText())
        {
            string fileName;
            //process the file here and store fileName in variable
            return fileName;
        }
    }
}

Ich kann eine Importdatei öffnen, aber wenn ich die Importdatei ändern und den Dialogfeld "Datei wieder öffnen möchte, fehlerhaft. Weiß jemand, warum dies der Fall ist?
Außerdem habe ich Probleme beim Debuggen, da ein Haltepunkt in derselben Zeile (oder vor) in den Aufruf von DLG.Showdialog () wird, dass dieser Fehler ebenfalls erscheint. Irgendeine Hilfe wäre geschätzt?

War es hilfreich?

Lösung

Sie machen zwei Aktionen für einen Benutzer -Klick aus.

Sie zeigen eine MessageBox an, die Ihre Berechtigung effektiv verwendet, um einen Dialog zur Benutzeraktion anzuzeigen.

Sie versuchen dann, den Dialog zu zeigen, da dies ein zweites Dialogfeld zur Benutzeraktion ist, das er nicht erlaubt ist.

Befreien Sie sich von dem Bestätigungsdialog und es wird Ihnen gut gehen.

Andere Tipps

Entfernen Sie die Bruchpunkte vorher if (dlg.showdialog () ?? false) Code wird seine Arbeit für mich ausführen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top