2010-08-17 27 views
6

Estoy intentando un ejemplo de diálogo de archivo básico, here, y aparece un error en 'OK', y no sé por qué.'System.Nullable <bool>' no contiene una definición para 'OK'

de error 1 'System.Nullable' no contiene una definición para 'OK' y ningún método de extensión 'OK' aceptar un primer argumento de tipo 'System.Nullable' se podía encontrar (¿falta una directiva using o una referencia de ensamblado?)

private void button1_Click(object sender, System.EventArgs e) 
{ 
    Stream myStream = null; 
    OpenFileDialog openFileDialog1 = new OpenFileDialog(); 

    openFileDialog1.InitialDirectory = "c:\\" ; 
    openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*" ; 
    openFileDialog1.FilterIndex = 2 ; 
    openFileDialog1.RestoreDirectory = true ; 

    if(openFileDialog1.ShowDialog() == DialogResult.OK) 
    { 
     try 
     { 
      if ((myStream = openFileDialog1.OpenFile()) != null) 
      { 
       using (myStream) 
       { 
        // Insert code to read the stream here. 
       } 
      } 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message); 
     } 
    } 
} 
+0

Cuál es su ensamblaje OpenFileDialog de? –

+0

esto funciona, ¿puedes ser un poco más específico? El error probablemente no esté aquí ... – jeroenh

Respuesta

16

Hay dos versiones de OpenFileDialog en .NET framework: WinForms one y WPF one. Parece que estás usando el WPF, que, de hecho, devuelve un valor Nullable<bool> desde OpenFile. La versión de WinForm devuelve un valor DialogResult, que parece ser lo que está esperando.

+0

La versión que ha vinculado es la de WIN32. No creo que haya uno específico para WPF. – pug

+1

@pug Tenga en cuenta que la clase en cuestión se define en el conjunto PresentationFramework, uno de los ensamblajes principales de WPF. –

8

Parece que usted tiene una propiedad local llamado DialogResult. Intenta usar System.Windows.Forms.DialogResult.OK en su lugar.

+0

Esto funcionó para mí. ¡¡¡¡¡Gracias!!!!! – jjones150

1

Parece que está tratando de usar ShowDialog para System.Windows.Controls. Trate de hacer la llamada explícita a System.Windows.Forms

igual:

System.Windows.Forms.OpenFileDialog openFileDialog1 = new System.Windows.Forms.OpenFileDialog(); 
Cuestiones relacionadas