Pregunta

Hace un tiempo escribí un control de usuario Silverlight que tenía una función de importación CSV / exportación. Esto ha estado trabajando muy bien, hasta hace poco descubrí que erroring en un escenario. Esto puede haber sido debido al movimiento de Silverlight 3.

El error:
Mensaje: Error no controlada en Silverlight 2 Aplicación
Código: 4004
Categoría: ManagedRuntimeError
Mensaje: System.Security.SecurityException: Diálogos debe ser iniciada por el usuario
. en System.Windows.Controls.OpenFileDialog.ShowDialog ()
en MyControl.OpenImportFileDialog ()
en ...

el código:

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;
        }
    }
}

Me puede abrir un archivo de importación, pero si quiero cambiar el archivo de importación, y volver a abrir el diálogo de archivo, él los errores. ¿Alguien sabe por qué esto es así?
Además, estoy teniendo problemas debido a la depuración de la colocación de un punto de interrupción en la misma línea (o antes) de la llamada dlg.ShowDialog () parece ser la causa que aparezca este error también. Se agradecería cualquier ayuda?

¿Fue útil?

Solución

hacer dos acciones en un solo clic del usuario.

Usted muestra un cuadro de mensaje que utiliza de manera efectiva su permiso para mostrar un cuadro de diálogo en la acción del usuario.

A continuación, tratar de mostrar el cuadro de diálogo, ya que este es un segundo diálogo sobre la acción del usuario no está permitido.

deshacerse del cuadro de diálogo de confirmación y se le multa.

Otros consejos

Eliminar puntos de ruptura antes de si (dlg.ShowDialog () ?? falsa) código se ejecutará su trabajo para mí.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top