2010-08-17 4 views
6

Ich versuche einen grundlegenden Dateidialog Beispiel von, here, und ich bekomme einen Fehler auf 'OK', und ich weiß nicht warum.'System.Nullable <bool>' enthält keine Definition für 'OK'

Fehler 1 ‚System.Nullable‘ enthält keine Definition enthalten für ‚OK‘ und keine Erweiterungsmethode ‚OK‘ könnte ein erstes Argument vom Typ ‚System.Nullable‘ Annahme gefunden werden (möglicherweise fehlt eine using-Direktive oder eine Baugruppe Referenz?)

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

Welche Montage ist Ihr Openfiledialog aus? –

+0

das funktioniert, können Sie ein bisschen konkreter sein? Der Fehler ist wahrscheinlich nicht hier ... – jeroenh

Antwort

16

Es gibt zwei Versionen von OpenFileDialog im .NET Framework: die WinForms one und die WPF one. Es sieht so aus, als ob Sie den WPF verwenden, der tatsächlich einen Nullable<bool> Wert von OpenFile zurückgibt. Die WinForm-Version gibt einen DialogResult Wert zurück, der scheint, was Sie erwarten.

+0

Die Version, die Sie verknüpft haben, ist die WIN32-Version. Ich glaube nicht, dass es einen spezifischen WPF gibt. – pug

+1

@pug Beachten Sie, dass die betreffende Klasse in der PresentationFramework-Assembly definiert ist, einer der Kern-Assemblys von WPF. –

8

Es klingt wie Sie eine lokale Eigenschaft DialogResult genannt haben. Verwenden Sie stattdessen System.Windows.Forms.DialogResult.OK.

+0

Das hat bei mir funktioniert. Danke!!!!! – jjones150

1

Es sieht so aus, als ob es versucht, ShowDialog für System.Windows.Controls zu verwenden. Versuchen der Aufruf explizit System.Windows.Forms

Wie machen:

System.Windows.Forms.OpenFileDialog openFileDialog1 = new System.Windows.Forms.OpenFileDialog(); 
Verwandte Themen